第二章:线性表(1)
1、一个线性表时n个数据元素的有限序列。
2、一个数据元素可以由若干个数据项组成,这种情况常把数据元素成为记录:
每个学生为一个记录,它由学号、姓名、性别、年龄、班级组成:
(注意:同一线性表中的元素必须具有相同的属性。)
3、抽象数据类型线性表如下:
ADT List{
数据对象:D={ ai | ai 属于 Elemset , i=1,2,3,... ,n, n>=0 }
数据关系 : R1={ < ai-1 , ai > | ai-1 , ai 属于D,i = 2,... , n }
基本操作:
InitList(&L)
操作结果:构造一个空的线性表L
DestroyList(&L)
初始条件:线性表L已经存在
操作结果:销毁线性表L
ClearList(&L)
初始条件:线性表已经存在
操作结果:将L重置为空表
ListEmpty(L)
初始条件:线性表L已经存在
操作结果:若L为空表,则返回TRUE,否则返回FLASE
ListLength(L)
初始条件:线性表L已经存在
操作结果:返回L中数据元素的个数
GetElem(L , i , &e)
初始条件:线性表L已存在, 1 <= i <=ListLength(L)
操作结果:用e返回L中第 i 个数据的值
LocateElem(L , e , compare())
初始条件:线性表L已经存在,compare()是数据元素判定函数
操作结果:返回L中第1 个与e满足关系 compare( ) 的数据元素的位序,若这样的数据元素 不存在,则返回 0
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 无定义
ListInsert(&L,i,e)
初始条件:线性表L已经存在,1 <= i <=ListLength( L ) +1
操作结果:在L中第 i 个位置之前插入新的数据元素 e, L长度加1
ListDelete(&L ,i , &e)
初始条件:线性表L已经存在且非为空, 1<= i <=ListLength( L )
操作结果:删除L 的第 i 个数据元素,并用e返回其值,L长度减 1
ListTraverse(L , visit())
初始条件:线性表L已经存在
操作结果: 依次对L的每个数据元素调用函数 visit()。一旦visit()失败,操作失
} ADT List
上述为各个函数的操作:
--------------------------------------------------------------------------------------------------------------------------------