线性表的定义
一、线性表描述
在日常生活中, 线性表的例子比比皆是。例如 ,26个英文字母的字母表:
- (A, B, C, …,Z)
是一个线性表,表中的数据元素是单个字母。在稍复杂的线性表中, 一个数据元素可以包含若干
个数据项。例如学生基本信息表,每个学生为一个数据元素,包括学号、姓名、性别、籍贯、 专业等数据项。
由以上示例可以看出,它们的数据元素虽然不同,但同一线性表中的元素必定具有相同的特性, 即属千同一数据对象,相邻数据元素之间存在着序偶关系。
诸如此类由n (n >=0 )个数据特性相同的元素构成的有限序列称为线性表。
线性表中元素的个数n (n >=0 )定义为线性表的长度,n = 0 时称为空表。
非空的线性表或线性结构, 其特点是:
- 存在唯一的一个被称作 “第一个" 的数据元素;
- 存在唯一的一个被称作 “最后一个" 的数据元素;
- 除第一个之外, 结构中的每个数据元素均只有一个前驱;
- 除最后一个之外,结构中的每个数据元素均只有一个后继。
二、线性表的定义
线性表是一个相当灵活的数据结构,其长度可根据需要增长或缩短,即对线性表的数据元素不仅可以进行访问,而且可以进行插入和删除等操作。
【我们使用的是C语言来描述的】
线性表的抽象数据类型定义其实简单来说:这个数据结构有什么功能;这个和具体实现这个功能无关,就是要搞清楚这个数据结构有哪些功能就像,实现有很多方法,但是实现的目的就是唯一的。我们就是找出这个唯一的东西。
实现线性表可以使用数组【顺序表】、指针结构体【链表】来完成这些功能。
操作名(函数名) | 初始条件 | 操作结果 |
---|---|---|
InitList(&L) | - | 构造一个空的线性表L |
DestroyList(&L) | L已存在 | 销毁线性表L。 |
ClearList(&L) | L已存在 | 将L重置为空表。 |
ListEmpty(L) | L已存在 | 若L为空表,则返回true,否则返回false。 |
ListLength(L) | L已存在 | 返回L中数据元素个数。 |
GetElem(L, i, &e) | L已存在,且1≤i≤ListLength(L) | 用e返回L中第1个数据元素的值 |
LocateElem(L, e) | L已存在 | 返回L中第1个值与e相同的元素在L中的位置。若这样的数据元素不存在,则返回值为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中第1个位置之前插入新的数据元素e,L的长度加1 |
ListDelete(&L, i) | L已存在且非空,且1 ≤ i ≤ ListLength(L) | 删除L的第1个数据元素,L的长度减1 |
TraverseList(L) | L已存在 | 对线性表L进行遍历,在遍历过程中对 L的每个结点访问一次。 |