1. 线性表的抽象数据类型定义
- 数据对象:就是一些元素,元素的个数大于等于 0。
- 数据关系:ai-1 是 ai 的前驱,同时 ai 是 ai-1 的后继,他们都属于集合 D
2. 线性表的基本操作
-
初始化线性表 (lnitlist(&L))
- 操作结果:构造一个空的线性表L
-
销毁线性表(DestoryList(&L))
- 初始条件:线性表 L 已经存在。
- 操作结果:销毁线性表 L,内存中再没有这个线性表。
-
清除线性表(ClearList(&L))
- 初始条件:线性表 L 已经存在。
- 操作结果:将线性表 L 里面的内容重置。
-
判断线性表是否为空(ListEmpty(L))
- 初始条件:线性表 L 已经存在。
- 操作结果:判断线性表内是否有元素,如果线性表 L 为空表(n = 0),则返回 TURE,反之返回 FALSE。
-
求线性表长度 (ListLength(L))
- 初始条件:线性表 L 已经存在。
- 操作结果:返回线性表 L 中的数据元素的个数。
-
获取线性表元素(GetElem(L,i,&e))
- 初始条件:线性表 L 已经存在,取第 i 个元素,i 的取值范围,1 <= i <= ListLength(L),小于等于线性表的长度。
- 操作结果:用 e 接收线性表 L 中第 i 个数据元素的值。
-
查找和定位元素(LocateElem(L,e,compare()))
- 初始条件:线性表 L 已经存在,compare()是数据元素判定函数,找大于小于或等于 e 的元素。
- 操作结果:返回 L 中第一个与 e 满足 compare() 的数据元素的位序.若这样的数据元素不存在则返回值为 0。
-
获得元素的前趋(PriorElem(L,cur_e,&pre_e))
- 初始条件:线性表 L 已经存在
- 操作结果:若 cur_e 是 L 的数据元素,且不是第一个,则用 pre_e 接收它的前趋(前一个元素),反之操作失败;pre_e 无意义。
-
获得元素的后继(NextElem(L,cur_e,&next_e))
- 初始条件:线性表 L 已经存在
- 操作结果:若 cer_e 是 L 的数据元素,且不是最后一个,则用 next_e 接收它的后继,反之操作失败,next_e 无意义。
-
在线性表中插入一个元素(Lisrinsert(&L,i,e))
- 初始条件:线性表 L 已经存在,插入位置范围 1 <= i < =Listlength(L)+1,可以在第一个位置插入,也可以插入在最后一个元素之后。
- 操作结果:在 L 的第 i 个位置之前插入新的数据元素 e ,L的长度加一。
- 删除第 i 个元素(ListDlete(&L,i,&e))
- 初始条件:线性表 L 已经存在,删除元素 i 的位置, 1<= i <= ListLength(L),从第一个到最后一个元素。
- 操作结果:删除 L 的第 i 个数据元素,并用 e 接收被删除的值,L 的长度减一。
- 遍历线性表(ListTraverse(&L,visited()))
- 初始条件:线性表 L 已经存在
- 操作结果:依次对线性表中每个元素调用 visited()。