线性结构的
基本特征:1.集合中必存在唯一的一个“第一元素”;
2.集合中必存在唯一的一个“最后元素”;
3.除最后元素在外,均有唯一的后继;
4.除第一元素之外,均有唯一的前驱。
2.1 线性表的类型定义
抽象数据类型线性表的定义如下:ADT List {
数据对象:
{称n为线性表的表长; 称n=0时的线性表为空表。}数据关系:R1={ <ai-1 ,ai >|ai-1 ,ai∈D, i=2,...,n }
{设线性表为 (a1,a2,...,ai,...,an), 称i为ai在线性表中的位序。}
ADT的操作分为四类:结构初始化(一个);销毁结构(一个);引用型操作(七个);操作型操作(四个)。
|
| 初始条件 | 操作结果 |
结构初始化 | InitList(&L) | 无 | 构造一个空的线性表L |
销毁结构 | DestroyList(&L) | 线性表L已存在 | 销毁线性表L |
引用型操作 | ListEmpty(L) | 线性表L已存在 | 若L为空表,则返回TRUE,否则FALSE |
ListLength(L) | 线性表L已存在 | 返回L中元素个数 | |
PriorElem(L,cur_e,&pre_e ) | 线性表L已存在 | 若cur_e是L的元素,但不是第一个,则用pre_e 返回它的前驱,否则操作失败,pre_e无定义 | |
NextElem(L,cur_e,&next_e ) | 线性表L已存在 | 若cur_e是L的元素,但不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义 | |
线性表L已存在1≤i≤LengthList(L) | 用e返回L中第i个元素的值 | ||
LocateElem(L,e,compare( ) ) | 线性表L已存在,compare( )是元素判定函数 | 返回L中第1个与e满足关系compare( )的元素的位序。若这样的元素不存在,则返回值为0 | |
ListTraverse(L,visit( )) | 线性表L已存在 | 依次对L的每个元素调用函数visit( )。一旦visit( )失败,则操作失败 | |
加工型操作 | ClearList( &L ) | 线性表L已存在 | 将L重置为空表 |
PutElem( L, i, &e ) | 线性表L已存在1≤i≤LengthList(L) | L中第i个元素赋值同e的值 | |
ListInsert( &L, i, e ) | 线性表L已存在1≤i≤LengthList(L)+1 | 在L的第i个元素之前插入新的元素e,L的长度增1 | |
ListDelete(&L, i, &e) | 线性表L已存在且非空,1≤i≤LengthList(L) | 删除L的第i个元素,并用e返回其值,L的长度减1 |
D={ ai | ai ∈ElemSet, i=1,2,...,n, n≥0 }