数据结构学习笔记1.1——线性表的概念
写在前面
这是一个学习笔记,也是逐步理解的过程。
希望能一直持续下去吧。
目录
首先了解一下线性表的概念和定义吧,当然还有C++的抽象基类。具体实现留在下一节。
概念
- 线性表是一个有限序列 ,也就是说,线性表存在唯一的第一个表项和最后一个表项,其他表项有且仅有一个直接前驱,(第一个表项没有前驱);除最后一个表项外,其他表项有且仅有一个直接后继i(最后一个表项没有后继)。
- L = (a1, a2, …,an), L是表名,n是表的长度。
- 第一个表项称为表头,最后一个表项称为表尾。
- 邻接关系是1对1的,所有结点按1对1的邻接关系构成的整体就是线性结构。
- 概念上允许线性表中各个元素可以有不同的数据类型,但目前学习过程只考虑相同的数据类型。
几个例子
几个线性表的例子:
COLOR = (‘Red’, Orange’, ‘Yellow’, ‘Green’, ‘Blue’, ‘Black’)
DEPT = (通信,计算机,自动化,微电子,建筑与城市规划,生命科学,精密仪器)
SCORE = (667, 664, 659, 659, 657, 654, 653, 652, 651, 650, 650)
线性表中的值与它的位置之间既可以有联系,也可以没有联系。有序线性表中的元素按照值的递增顺序排列,而无序线性表则没有这样的关系。
线性表的抽象数据类型
// 线性表的抽象数据类型
ADT LinearList is
Objects: n(≥0)个原子表项的一个有限序列。
Function:
create() 创建一个空线性表
int Length() 计算表长度
int search(T& x) 找x在表中的位置,返回表项位置
int Locate(int i) 返回第i个表项在表中的位置
bool getData(int i,T& x) 取第i个表项的值
bool setData(int i,T& x) 用x修改第i个表项的值
bool Insert(int i,T& x) 在第i个表项后插入x
bool Remove(int i,T&x ) 删除表中第i个表项,通过x返回删除表项的值
bool IsEmpty() 判断表是否为空
bool IsFull() 判断表是否已满
void Sort() 对当前表排序
end LinearList
以上运算只是逻辑层面上的定义,只给出了“做什么”。只有在确定了存储结构之后,才能实现“如何做”等细节。
参考书目:《数据结构》(用面向对象方法与C++语言描述)(第2版) .清华大学出版社. 殷人昆