Chapter3 #Play With Data Structure

Chapter3 线性表

  1. 线性表的定义
  • 线性表(List):零个或多个数据元素的有限序列。
  • 若将线性表记为(a1, .,a.1, ai, ai+1, .,. an),则表中al-1 领先于a, a领先于ai+1,称ai-1是ai的直接前驱元素,ai+1 是a的直接后继元素。当i=1, 2,…,n-1时,a有且仅有一一个直接后继,当i=2,3, …, n时,a有且仅有一一个直接前驱。
  • 线性表元素的个数n (n≥0)定义为线性表的长度,当n=0时,称为空表。
  1. 线性表的抽象数据类型
ADT线性表(List)
Data
	线性表的数据对象集合为{a1,a2...an},.每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。
Operation
	InitList (*L) :	初始化操作,建立一个空的线性表L。
	ListEmpty(L) :	若线性表为空,返回true,否则返回false。
	ClearList(*L) :将线性表清空。
	GetElem(L,i,*e) :将线性表L中的第i个位置元素值返回给e。
	LocateElem(L,e) :在线性表L中查找与给定值e相等的元素,如果查找成功,返回
					 该元素在表中序号表示成功;否则,返回0表示失败。
	ListInsert (*L,i,e):在线性表L中的第i个位置插入新元素e。
	ListDelete (*L,1,*e) :删除线性表L中第i个位置元素,并用e返回其值。
	ListLength (L) :返回线性表L的元素个数。
endADT
  1. 线性表的顺序存储结构
  • 既然线性表的每个数据元素的类型都相同,所以可以用C语言(其他语言也相同)的一维数组来实现顺序存储结构,即把第一个数据元素存到数组下标为0的位置中,接着把线性表相邻的元素存储在数组中相邻的位置。
#define MAXSIZE 20		/*存储空间初始分配量*/
typedef int ElemType; /*ElemType 类型根据实际情况而定,这里假设为int*/
typedef struct
{
	ElemType data [MAXSIZE]; /*数组存储数据元素, 最大值为MAXSIZE*/
	int length;		/*线性表当前长度*/
}SqList;
  • 这里,我们就发现描述顺序存储结构需要三个属性:
    存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置。
    线性表的最大存储容量:数组长度MaxSize。
    线性表的当前长度: length。
  1. 数据长度与线性表长度的区别
  • 数组的长度是存放线性表的存储空间的长度,存储分配后这个量是一-般是不变的。
  • 线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。
  • 在任意时刻,线性表的长度应该小于等于数组的长度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值