2.1 线性表的定义和特点
线性表是具有相同特性的数据元素的一个有限序列,第一个元素是线性起点(起始节点)、最后一个元素叫线性终点(终端节点)。每个元素都会有一个序号。
其中,n叫做表的长度。
n=0时为空表。
将非空的线性表(n>0)记作:(a1,a2,...an)
这里的数据元素ai(1<=i<=n)只是一个抽象的符号,其具体含义在不同的情况下可以不同。
—————2.2——————————————————————————————————
案例引入
只存系数与数据就够了,空着的不存
顺序存储结构存在的问题:
存储空间分配不灵活,运算的空间复杂度高。
解决方法:可以用链式存储法。
—————2.3——————————————————————————————————
线性表的类型定义
LnitList(&L) 数据初始化
DestroyList(&L) 销毁线性表
ListInsert(&L,i,e) 在线性表中插入
ListDelete(&L,i,&e) 在线性表中删除
还有:
ClearList(&L) 将线性表L重置为空表
ListEmpty(L) 若线性表L为空表,则返回TURE,否则返回FALSE
ListLength(L) 返回线性表L中的数据元素个数
GetElem(L,i,&e) 用e返回线性表L中第i个数据元素的值。(线性表L存在,且1<=i<=n)
LocateElem(L,e,compare()) 返回L中第一个与e满足compare()的数据元素的位序。若不存在,则返回值为0.
PriorElem(L,cur_e,&pre_e) 若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败;pre_e无意义。
NextElem(L,cur_e,&nex_e) 若cur_e是L的数据元素,且不是最后一个,则用pre_e返回它的后继,否则操作失败;pre_e无意义。
ListInsert(&L,i,e) 在L的第i个位置之前插入新的元素e,(第i个元素变成e,原来的第i个元素依次往后挪。i可以等于n+1)L的长度加一。
ListDelete(&L,i,&e) 删除L的第i个元素,并用e返回其值,L的长度减一
ListTraverse(&L,visited()) 依次对线性表中每个元素调用visited() 遍历。
———————2.4—————————————————————————————————
线性表的顺序表示和实现1
线性表的顺序表示又称为顺序存储结构或顺序映像
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构
不连续就没有前驱后继,就不符合顺序存储结构了。
——————2.4——————————————————————————————————
线性表的顺序表示和实现2
顺序表做大了,可以空闲着,不是都得存数据
顺序表的优点:以物理位置相邻表示逻辑关系,任一元素均可随机存放。
挺像是一个数组,但又不是一个数组。