目录
1.定义
线性表是具有相同特性的数据元素的一个有限序列。
同一线性表中的元素必定具有相同特性,数据元素间的关系是线性关系。
2.线性表的逻辑特征
①在非空的线性表,有且仅有一个开始节点a1,它没有直接前趋,而仅有一个直接后继a(2);
②有且仅有一个终端结点a(n),它没有直接后继,而仅有一个直接前趋a(n-1);
③其余的内部结点a(i)(2<=i<=n-1)都有且仅有一个直接前趋a(i-1)和一个直接后继a(i+1)。
线性表是一种典型的线性结构。
3.线性表的类型定义
抽象数据类型线性表的定义如下:
ADT List{
数据对象:D={a(i)|a(i)属于Elemset,(i=1,2,...,n,n>=0)}
数据关系:R={<a(i-1),a(i)>|a(i-1),a(i)属于D,(i=2,3,...,n)}
基本操作:
InitList(&L); DestroyList(&L);
ListInsert(&L,i,e); ListDelete(&L,i,&e);
......等等
}ADT List
4.基本操作
(1)InitList(&L)/Initialization List
操作结果:构造一个空的线性表L
(2)DestroyList(&L)
初始条件:线性表L已经存在
操作结果:销毁线性表L
(3)ClearList(&L)
初始条件:线性表L已经存在
操作结果:将线性表L重置为空表
(4)ListEmpty(L)
初始条件:线性表L已经存在
操作结果:若线性表L为空表,则返回TURE;否则返回FALSE
(5)ListLength(L):求线性表元素个数
初始条件:线性表L已经存在
操作结果:返回线性表L中的元素个数
(6)GetElem(L,i,&e);
初始条件:线性表L已经存在,1<=i<=ListLength(L)
操作结果:用e返回线性表L中第i个数据元素的值
(7)LocateElem(L,e,compare()):查找,定位
初始条件:线性表L已经存在,compare()是数据元素判定函数
操作结果:返回L中第一个与e满足compare()的数据元素的位序。若不存在返回值为0
(8)PriorElem(L,cur_e,&pre_e)
初始条件:线性表L已经存在
操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无意义
(9)NextElem(L,cur_e,&next_e)
初始条件:线性表L已经存在
操作结果:若cer_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无意义
(10)ListInsert(&L,i,e):插入一个元素
初始条件:线性表L已经存在,1<=i<=ListLength(L)+1
操作结果:在L的第i个位置之前插入新的元素e,L的长度加1
(11)ListDelete(&L,i,&e)
初始条件:线性表L已经存在,1<=i<=ListLength(L)
操作结果:删除L的第i个数据元素,并用e返回其值,L长度减一
(12)ListTraverse(&L,visited()):遍历
初始条件:线性表L已经存在
操作结果:依次对线性表中每个元素调用visited()