本文主要介绍了线性结构的典型代表——线性表的逻辑结构和抽象数据结构.
目录(更新中)
第一章 绪论
第二章 线性表
(3) 线性表的逻辑结构
参考资料
[1] 王红梅编著. 数据结构(C++版本)(第2版). 北京:清华大学出版社,2011.
[2] 张铭. coursera-数据结构基础. coursera.
线性结构
根据前文的讨论,数据结构主要有集合、线性结构、树结构、图结构四大类,本文要讨论的线性表正是线性结构的典型代表.
除线性表外,线性结构用可根据不同标准分为许多类型:
按复杂程度划分
- 简单的:线性表、栈、队列、散列表
- 高级的:广义表、多维数组、文件……
按访问方式划分
- 直接访问型(direct access)
- 顺序访问型(sequential access)
- 目录索引型(directory access)
按操作划分
- 线性表
- 栈
- 队列
本文讨论的线性表是线性结构的典型代表.

线性表的定义
线性表(linear list)简称表,是 \(n(n\geqslant 0)\) 个具有相同类型的数据元素的有限序列,线性表中数据元素的个数称为线性表的长度. 长度等于零时称为空表,一个非空表通常记为:
\[ L=(a_1, a_2, \cdots, a_n) \]

其中,\(a_i(1\leqslant i \leqslant n)\) 称为数据元素,小脚标 \(i\) 表示该元素在线性表中的位置或序号. 任意一堆相邻的数据元素 \(a_{i-1}\) 和 \(a_i(1<i\leqslant n)\) 之间存在序偶关系 \(<a_{i-1}, a_i>\) ,且 \(a_{i-1}\) 称为 \(a_i\) 的前驱, \(a_i\) 称为 \(a_{i-1}\) 的后继.
线性表的数据元素具有抽象(即不确定)的数据类型,在具体的应用程序中被具体的数据类型所替代.
具体地,线性表具备以下特点:
均匀性:虽然不同线性表的数据元素可以是各种各样的,但对于同一线性表的各数据元素必定具有相同的数据类型和长度.
有序性:各数据元素在线性表中都有自己的位置,且数据元素之间的相对位置是线性的.
线性表的抽象数据类型定义
线性表应当满足存取访问、插入和删除等操作. 可将其抽象数据类型定义如下:
1 |
|
需要注意的是:
对于不同的应用,线性表包含的基本操作可能不同,同名操作的实现细节可能不能.
对于实际问题中更复杂的操作,可以用这些基本操作的组合来实现. 如按值删除,可以通过上述定义的
Locate
和Deleta
操作的组合实现.