下一章 上一章 目录 设置
2、线性表之顺序表 定义:相同 ...
-
定义:相同数据类型,有限序列(有次序)
InitList(&L):初始化表,分配内存空间
DestroyList(&L):销毁,释放内存空间
Listinsert(&L.i.e):插入
ListDelete(&L.i&e):删除
LocateElem(L.e):按值查找
GatElem(L.i):按位查找
线性表存储分顺序表(顺序存储)和链表(链式存储)。
(1)顺序表:逻辑相邻,物理位置相邻。
sizeof(ElemType):得知数据元素大小
eg:sizeof(int)=4B
1.1顺序表存在两种分配方式,即静态分配(静态数组)与动态分配(动态指针)
malloc函数(动态申请)
free函数(释放) L.data=(ElemType*)malloc(sizeof(ElemType)*size)
1.2顺序表的插入与删除
1.2.1Listinsert(&L.i.e):插入,在第i个位置插入元素e
eg:在第三个位置插入元素,即第三个及第三个以后的元素后移(相当于在第二个与第三个元素之间插入新元素
代码实现:
for(int j=L.length;j>=i;j--) //从最后一个元素开始向前遍历,遍历到第i-1个位置
L.data[j]=L.data[j-1] //注:数组从[0]开始
1.2.2ListDelete(&L.i&e):删除,删除第i个位置元素
代码实现:
for(int j=i;j L.data[j-1]=L.data[j] //注:数组从[0]开始
1.3顺序表查找
LocateElem(L.e):按值查找,获取第i个位置元素即data[i-1]
GatElem(L.i):按位查找,时间复杂度为O(n)