第二章 线性表
主要内容:
1.线性表的类型定义
2.线性表的顺序表示和实现
3.线性表的链式表示和实现
学习提要:
1.了解线性表的逻辑结构和物理结构
2.掌握两种存储结构的描述方法以及在每种存储结构上的基本操作的实现
3.理解两种存储结构的特点及其使用场合
重难点内容:
顺序表、链表及其操作实现
线性结构是一个数据元素的有序(次序)集 。
线性结构的基本特征:
(1)存在唯一的一个被称作“第一个”的数据元素
(2)存在唯一的一个被称作“最后一个”的数据元素
(3)除第一个外,集合中的每个数据元素均只有 一个前驱
(4)除最后一个外,集合中的每个数据元素均只有一个后继
2.1 线性表的类型定义
线性表:n个数据元素组成的有限序列。表示为(a1,a2,…,ai,ai+1,…,an)
例:英文字母表(A,B,C,…..Z)是一个线性表
逻辑特征:
·1<i<n时
ai的直接前驱是ai-1,a1无直接前驱
ai的直接后继是ai+1,an无直接后继
·元素同构,且不能出现缺项
线性表的长度:表中元素的个数n(n>=0),n=0 空表。
位序:元素ai在表中的位置数i 。
抽象数据类型线性表的定义如下:
ADT List {
数据对象:
D={ ai | ai ∈ElemSet,i=1,2,...,n, n≥0 }
数据关系:
R1={ <ai-1 ,ai >|ai-1 ,ai∈D, i=2,...,n }
基本操作:
InitList( &L )
操作结果:构造一个空的线性表L。
DestroyList( &L )
初始条件:线性表L已存在。
操作结果:销毁线性表L。
ListEmpty( L )
初始条件:线性表L已存在。
操作结果:若L为空表,则返回TRUE,否则FALSE。
ListLength( L )
初始条件:线性表L已存在。
操作结果:返回L中元素个数。
GetElem( L, i, &e )
初始条件:线性表L已存在,1≤i≤ListLength (L)
操作结果:用e返回L中第i个元素的值。
LocateElem( L, e, compare( ) )
初始条件:线性表L已存在,compare( )是元素判定函数。