1.1 线性表的基本定义和操作
1.1.1 线性表的定义
线性表是具有相同数据类型的 n(n
≥
\geq
≥ 0) 个数据元素的有限序列.其中n为表长,当
n
=
0
n=0
n=0时,该线性表是一个空表。若用
L
L
L命名线性表,则其一般表示如下:
L
=
(
a
1
,
a
2
,
⋅
⋅
⋅
,
a
n
)
L = (a_1, a_2 ,\cdot \cdot \cdot ,a_n)
L=(a1,a2,⋅⋅⋅,an)
其中,
a
1
a_1
a1是唯一的“第一个”数据元素,又称为表头元素;
a
n
a_n
an是唯一的“最后一个”数据元素,又称为表尾元素。除第一个元素外,每个元素有且仅有一个直接前驱,除最后一个元素外,每个元素有且仅有一个直接后继.以上就是线性表的逻辑特性,这种线性有序的逻辑结构正是线性表名字的由来。
由此,我们得出线性表的特点如下:
-
表中元素的个数有限。
-
表中元素具有逻辑上的顺序性,在序列中各元素排序有其先后次序·
-
表中元素都是数据元素,每一个元素都是单个元素。
-
表中元素的数据类型都相同,这意味着每一个元素占有相同大小的存储空间。
-
表中元素具有抽象性。即仅讨论元素间的逻辑关系,不考虑元素究竟表示什么内容。
注意:
线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存 储结构,两者属于不同层面的概念,因此不要将其混淆
1.1.2 线性表的基本操作
一个数据结构的基本操作是指其最核心、最基本的操作。其他较复杂的操作可以通过调用其基本操作来实现.线性表的主要操作如下:
- InitList(&L):初始化表。构造一个空的线性表。
- Length(L):求表长。返回线性表L的长度,即L中数据元素的个数。
- LocateEIem(L, e):按值查找操作。在表L中查找具有给定关键字值的元素。
- GetElem(L, i) :按位查找操作。获取表L中第i个位置的元素的值。
- ListInsen(&L, i, e):插入操作。在表L中第i个位置上插入指定元素e。
- ListDelete(&L, i, &e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。
- PnntList(L):输出操作。按前后顺序输出线性表L的所有元素值.
- Empty(L):判空操作。若L为空表,则返回true.否则返回
- DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占用的内存空间。
注意:基本操作的实现取决于采用哪一种存储结构,存储结构不同,算法的实现也不
同。@’&'表示c++中的引用。如果传入的变量是指针型的变量,且在函数体内要对传入的
指针进行改变,则将用到指针变量的引用型。在c中采用指针的指针也可达到同样的效果。
1.1.3 题目(单项选择)
-
线性表是具有n个( )的有限序列。
A. 数据表
B. 字符
C. 数据元素
D. 数据项 -
以下( )是一个线性表.
A. 由n个实数组成的集合
B. 由100个字符组成的序列
C. 所有整数组成的序列
D. 邻接表 -
在线性表中,除了开始元素外,每个元素( )。
A. 只有唯一的前趋元素
B. 只有唯一的后继元素
C. 有多个前趋元素
D. 有多个后继元素
1.1.4 答案
-
C
线性表是山具有相同数据类型的有限个数据元素组成的,数据元素是由数据项组成的。 -
B
线性表的定义要求为有限序列,而C中序列的元素个数是无穷多个,C错误;而A中指定的是集合,集合中各元素没有前后驱关系,A错误;D是属于存储结构,线性表是一种逻辑结构,不要将二者混为一谈。只有B满足线性表定义的条件。 -
A
线性表中,除了最后一个元素外,每个元素只有唯一的后继元素。