2.1 线性表的定义和基本操作
2.1.1 线性表的定义
线性表是具有相同数据类型的n个数据元素的有限序列,其中n为表长,当n=0时,线性表是一个空表。若用L命名线性表,则其一般表示为:
L
=
(
a
1
,
a
2
,
⋅
⋅
⋅
,
a
n
)
L=(a_1,a_2,···,a_n)
L=(a1,a2,⋅⋅⋅,an)
a_1称为表头元素,a_n称为表位元素,除去这两个元素之外,每个元素都有一个直接前驱和一个直接后继。这些是线性表的逻辑特性。
线性表的特点:
- 元素的个数有限
- 元素具有逻辑上的顺序性,元素有先后次序。
- 元素都是数据元素,每个元素都是单个元素。
- 元素的数据类型都相同,这意味着每个元素占有相同大小的元素空间。
- 元素具有抽象性,即仅讨论元素之间的逻辑性,不考虑元素究竟是什么内容。
[注意:线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,两者属于不同层面的概念,因此不要将其混淆。]
2.1.2 线性表的基本操作
- IniList(&L):初始化表。构造一个空的线性表。
- Length(L):求表长。返回线性表L的长度,即L中数据元素的个数。
- LocateElem(L, e):按值查找操作。在表L中找到具有给定关键字值的元素。
- GetElem(L, i):按位查找操作。获取表L中第i个位置的元素的值。
- ListInsert(&L, i, &e):插入操作。在表L中第i个位置上插入指定元素e。
- ListDelete(&L, i, e):删除操作。在表L中删除第i个位置的元素,并用e返回被删除的元素。
- PrintList(L):输出操作。按顺序输出线性表L的所有元素。
- Empty(L):判空操作。若L为空表,则返回True,否则返回False。
- DestoryList(&L):销毁操作。销毁线性表L,并释放L占用的内存空间。
[注意:①基本操作的实现取决于采取哪种存储结构,若存储结构不同,基本操作的实现的算法也不同。②符号&表示C++语言中的引用调用,在C语言中采用指针也可以达到同样的效果。]