数据结构学习笔记1.1——线性表的概念

数据结构学习笔记1.1——线性表的概念

写在前面

这是一个学习笔记,也是逐步理解的过程。
希望能一直持续下去吧。

目录

首先了解一下线性表的概念和定义吧,当然还有C++的抽象基类。具体实现留在下一节。

概念

  1. 线性表是一个有限序列 ,也就是说,线性表存在唯一的第一个表项和最后一个表项,其他表项有且仅有一个直接前驱,(第一个表项没有前驱);除最后一个表项外,其他表项有且仅有一个直接后继i(最后一个表项没有后继)。
  2. L = (a1, a2, …,an), L是表名,n是表的长度。
  3. 第一个表项称为表头,最后一个表项称为表尾
  4. 邻接关系是1对1的,所有结点按1对1的邻接关系构成的整体就是线性结构。
  5. 概念上允许线性表中各个元素可以有不同的数据类型,但目前学习过程只考虑相同的数据类型。

几个例子

几个线性表的例子:
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版) .清华大学出版社. 殷人昆

猜你喜欢

转载自blog.csdn.net/qq_45830912/article/details/109633708
今日推荐