线性表的逻辑结构
在谈论逻辑结构的时候,我们不讨论具体数据在物理内存中的存储细节,而只关注线性表的逻辑结构。数据结构系列文章02介绍过常见的逻辑结构有:集合、线性表结构、树结构和图结构等。
A.What(什么是线性表)
本质是一个有序序列,序列中的所有元素具有相同的数据类型,除了序列的第一个和最后一个元素,每一个元素有且仅有一个前驱元素和一个后继元素;第一个元素没有前驱,最后一个元素没有后继
说明:总而言之,线性表是一种一对一的数据结构
B.线性表的抽象数据类型
所谓的线性表的抽象数据类型,就是忽略具体的,只关注性质;类似于面向对象中的抽象类,只关注有什么基础的属性和方法;线性表的抽象数据类型也是如此,即只关注线性表的性质和方法
下面给出线性表的抽象数据类型:
ADT List
Data
(a1, a2, a3, a4, ... , an)有序列的顺序表
Operation
InitList(*L); //初始化线性表L的函数
IsEmpty(*L); //true表示线性表为空
ClearList(*L); //清空线性表
GetElm(*L, i, *e); //取线性表L的第i个元素并存入到e中
LocateElm(*L, e); //查找与给定值e相等的元素,正整数表示查找成功;0表示失败
ListInsert(*L, i, e); //在线性表L中的i位置处插入新元素e
ListDelete(*L, i, *e); //删除线性表L中i位置处的元素,并存入到e中
ListLength(*L); //得到线性表L的元素个数
EndADT
具体的线性表是依赖于特定物理结构的,因此在实现线性表的时候,我们一般先定义一个抽象线性表类,顺序存储结构的线性表类继承抽象的线性表类并实现对应函数,链式存储结构的线性表类继承抽象的线性表类并实现对应函数