Liner_List 线性结构。线性表是由同一类型的数据元素构成的线性结构。实际中,考生信息表、字符串等都属于线性表
线性表通常可表示为(a1,a2,a3,a4,……an),n为表长,n=0 时为空表
线性表的抽象数据类型
ADT List {
数据对象:D
数据关系:R 前驱、后继
数据操作:
线性表初始化:ListInit(L)
初始条件:线性表L不存在
操作结果:构造一个空的线性表L
求线性表的长度:ListLength(L)
初始条件:线性表L存在操作结果:返回线性表中所含元素的个数
求表元:ListGet(L,i)
初始条件:线性表L存在,且1≦i ≦ListLength(L)
操作结果:返回线性表L中第i个元素的值或地址
按值查找:ListLocate(L,x)
初始条件:线性表L存在,x是一个和线性表L中元素类型相同的数据元素
操作结果:在线性表L中查找值为x的数据元素,其结果返回在L中首次出现的值为x的那个元素的序号,为查找成功,反正失败
清空线性表:ListClear(L)
初始条件:线性表L存在
操作结果:将L置为一个空的线性表
判空线性表:ListEmpty(L)
初始条件:线性表L存在
操作结果:若线性表L为空表,则返回true,否则返回false
求前驱:ListPrior(L,e)
初始条件:线性表L存在
操作结果:若e 是L的元素且不是第一个元素,返回e的前驱,否则操作失败
求后继:ListNext(L,e)
初始条件:线性表L存在
操作结果:若e 是L的元素且不是,最后一个元素,返回e 的后续,否则操作失败
插入:ListInsett(L,i,e)
初始条件:线性表L存在,插入位置正确(1≦i≦ListLength(L)+1)
操作结果:在线性表L的第i个位置上插入一个新元素e,L的长度加1
删除:ListDelete(L,i)
初始条件:线性表L存在,1≦i≦ListLength(L)
操作结果:在线性表L中删除第i个位置上的数据元素,L的长度减1
} ADT List
线性表的顺序表示和实现
线性表的顺序存储是指在内存中,用地址连续的一块存储空间顺序存放线性表的各元素,用这种形式存储的线性表成为顺序表。
a1的存储地址为LOC(a1),每个数据元素占L个存储单元,则第i个数据元素的地址为
Loc(ai)= Loc(a1)+(i-1)*L 1≦i≦n