a-b-c-d-e-f
1.他们的数据类型一致
2.除了第一个元素a,每一个元素有且只有一个前驱元素。
3.除了最后一个元素f,每一个元素都有且只有一个的直接后继
4.元素之间关系是一对一。
所以从 a 到 f 就是一条线 就是线性表
线性表有哪些方法:
- InitList(*L) : 初始化操作,建立一个空的线性表
- ListEmpty(L): 判断线性表是否为空,若线性表为空 返回true,否则返回true
- ClearList(*L):线性表清空
- GetElem(L,i,*e):讲线性表L中的第i个位置的元素返回给e
- LocateElem(L,e) :在线性表L中查找 给定值e 相等的 元素,如果查找成功,返回该元素在表中的序列号,否则失败返回0
- ListInsert(*L,i,e):在线性表中第i个位置插入新的元素e
- ListDelete(*L,i,e):删除线性表中的第i个元素,并且用e 返回其值
- listLength(L):返回线性表的长度
线性表顺序存储:
把一定内存空间内,存储相同的数据类型依次放在这块 内存空间
顺序线性表结构代码
<pre>
define MAXSIZE 20
typedef int ElemType
typedef struct
{
ElemType data [MAXSIZE];
int length;
} Sqlist ;
</pre>
#######链试线性表(单向)
a-b-c-d-e-f
1.他们的数据类型一致
2.除了第一个元素a,每一个元素有且只有一个前驱元素。
3.除了最后一个元素f,每一个元素都有且只有一个的直接后继
4.元素之间关系是一对一。
5.除了最后一个元素 f 都有后继元素的地址,最后一个为null
所以从 a 到 f 就是一条链试线性表
链试线性表结构代码
<pre>
typedef struct Node {
ElemType data;
struct Node *next;
} Node, *LinkList;
</pre>
链试线性表的比顺序表的 优点(单向)
删除 和 添加 不需要大规模移动,时间复杂度为O(1)
而顺序线性的O(n)
缺点
多占 一空间
同理 双向链表
<pre>
typedef struct Node {
ElemType data;
struct Node *next, *prev;
}Node, *LinkList;
</pre>
链试线性表的比顺序表的 优点 (双向)
删除 和 添加 不需要大规模移动,时间复杂度为O(1)
并且可以查找 上前驱元素
缺点
多占 俩空间
-
看我那么可爱n(≧▽≦)n
- 关注我的微薄 (梁同桌):http://weibo.com/tongrenyinsheng
- 个人博客: www.liangtongzhuo.com
- ios 个人写的app (同人音声)ASMR音乐