线性表是一种最简单的数据结构,是一种特定关系的数据元素的逻辑结构:线性结构。如26个英文字母组成的字母表(A、B、C、...、Z)就是线性结构,线性表的一种直观理解。
线性表的逻辑定义和基本特征
线性表在逻辑上的定义为:由n(n≧0)个数据元素(结点)组成的有限序列。线性表的长度是所含结点的个数。空表是表长为0的线性表。
线性表的基本特征。因为线性表是一组数据元素的有序集,所以线性表(线性结构)具有如下特征:
-集合中必然存在一个唯一的“第一元素”,它没有直接前驱元素,且有且只有一个直接后继元素;
-集合中必然存在一个唯一的“最后元素”,它没有直接后继元素,且有且只有一个直接后继元素;
-除“第一元素”和“最后元素”外,其余的结点都有且只有一个直接的前驱元素和一个直接的后继元素。
上述线性表的定义及特征与我们此前文章中介绍到的数组定义及特征相似,所以我们也可以说数组是一个顺序排列的线性表。
线性表的类型定义
线性表:线性表是n个元素的有序序列,是最常用且最简单的一种数据结构。其逻辑结构如下:
线性表的逻辑结构如文中前述26个英文字母(A、B、C、...、Z)组成的英文字母表中,数据元素都是同类型(字母),元素之间的关系是线性关系。
如下表例子:
上表中数据元素都是相同类型(记录),元素间的关系是线性关系。同一线性表中的元素必定具有相同特性。
综合上述两个例子我们可以得出:线性表中的数据元素可以是各种各样的,但同一个表中的元素必须具有相同的特性;相邻数据元素之间存在序偶关系;线性表中每一个元素都有确定的位置,如a1是第一个数据元素,ai是第i个数据元素。
抽象数据类型的线性表定义
ADTList{
数据对象:
D={ai
ai∈ElemSet,i=1,2,...,n,n≥0}
{称n为线性表的表长;称n=0时的线性表为空表。}
数据对象:
R1={ai-1,ai
ai-1,ai∈D,i=2,...,n}
{设线性表为(a1,a2,...,ai,...,an),称i为ai在线性表中的位序。}
基本操作:
结构初始化操作
结构销毁操作
饮用型操作
加工型操作
}ADTList
下面分别介绍一下定义当中的名词
初始化操作:InitList(L),操作结果:构造一个空的线性表L。
销毁操作:DestroyList(L),初始条件:线性表L已存在,操作结果:销毁线性表L
引用型操作:ListEmpty(L);ListLength(L);PriorElem(L,cur_e,pre_e);
NextElem(L,cur_e,next_e);GetElem(L,i,e);LocateElem(L,e,