用二元组表示为: Linear_list=(D,R) D={ ai | 1≤i≤n,n≥0, ai∈elemtype} /* elemtype 为任何数据类型线性表(Linear _List) n(n>=0)个数据元素的有限序列,数据元素之间具有线性关系。记作:(a1,a2,a3,......an)ai是数据元素线性关系:除第一个元素外,每个元素有且仅有一个前驱;除最后一个元素外,每个元素有且仅有一个后继。特点:数据元素之间的关系是它们在数据集合中的相对位置。数据结构描述:Linear_List=(D,R)D={ai|ai∈Dn i=1,2....n, n≥0}R={r} r={<ai-1,ai>|ai-1,ai∈D0 i=2,3,4,.......} D0是某个数据对象线性表的长度:线性表中含有数据元素的个数。直接前驱:ai-1是ai的前驱 i=2,3,4,...n。直接后继:ai+1是ai的后继 i=1,2,.....n-1。表头元素:线性表中的第一个数据元素。表尾元素:线性表中的最后一个数据元素。空表:长度为0的线性表。结点:通常指和一个数据元素相关的存储空间。首元结点:在链式存储结构中,存储线性表中第一个数据元素的结点。InitList(L):创建一个空的线性表L。ListLength(L):初始化条件:存在线性表L。返回L的长度,空表时返回0。ListEmpty(L):初始化条件:存在线性表。若L为空表,返回真(整数1);否则返回假(整数0)。GetElem(L,i,&e):初始化条件:存在线性表L,且1≤i≤ListLength(L)。返回L中的第i个数据元素的值,否则提示出错信息。ListInsert(L,i,e):将数据元素插入到线性表L的第i个元素之前。ListDelete(L,i):删除线性表的第i个元素。LocateElem(L,e):初始化条件:存在线性表L。返回L中第一个与e相等的数据元素的位序,若这样的元素不存在,则返回0。ADT linear_list{ data structure: D={ai|ai∈D0 i=1,2,....... n>=0} R={r} r={<ai-1,ai>|ai-1,ai∈D0 i=2,3,4,....} D0是某个数据对象 operations: ListInit(L) ListLength(L) ListEmpty(L) GetElem(L,i) ListInsert(L,i,e) ListDelete(L,i) LocateElem(L,e)} ADT linear_list按数据元素分:一般线性表、字符串、广义表、数组。按实施操作分:N元组——不能进行插入、删除。一般线性表——可以在任何位置插入、删除。堆栈——只能在一端插入、删除。队列——插入在一端、删除在另一端。双端队列——在两端可以插入、删除。顺序存储方式:用一组地址连续的存储单元依次存储线性表的各个元素。可借助一维数组实现。在顺序存储中,每个存储结点只含有所存储数据元素本身的信息,元素直接的逻辑关系是通过数组下标反映出来。特点:存储空间必须是连续的,预分配;逻辑顺序与物理顺序一致,用物理上的相邻来表示逻辑上的线性关系;任意相邻元素之间无空闲空间,且距离为1;已知基地址,可以计算出任意元素的存储地址:LOC(ai)=base+(i-1)*L