数据结构——线性表的抽象数据类型
ADT (SequenceList)
线性表(list)
Data
线性表的数据对象集合为{a1,a2,a3,…,an},每个元素的类型均为Data Type(int,char,自定义)。其中除了第一个元素a1外,每个元素有且只有一个直接前驱元素;除了最后一个元素an外,每个元素有且只有一个直接后继元素;数据元素之间的关系是一对一的关系。
Operation(初始化,插入,删除,查找)
InitList(*L): 初始化线性表,建立一个空的线性表L
IsEmpty(L): 若相性表为空,返回 true,否则返回false
ClearList(*L): 将线性表清空
GetElem(L,i,*e): 将线性表L中第i个位置的数据元素返回给e
ExsitElem(L,e): 存在则返回该元素在表中的下标,不存在就返回-1
InsertElem(*L,i,e): 在线性表L中第i个位置插入新元素e
DeleteElam(*L,i,*e): 删除线性表L中第i个位置的元素,并用e返回其值
GetLength(L): 返回线性表L中的元素个数
什么是顺序表、
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素
描述的要素
- 我们需要定义线性表的最大存储空间
#define Max_size 255
- 线性表里需要有统一类型的元素集合
typedef int ElemType;
typedef struct
{
int id;
char *name;
}ElementType;
- 定义顺序表结构
typedef struct
{
ElementType datas[Max_size];
int lngth;
}
1. 存储空间的起始位置,数组datas的存储位置
2. 线性表的最大存储容量:数组长度Maz_size
3. 线性表的当前长度:length
顺序表中地址的计算
顺序存储数据元素 | a1 | a2 | … | ai | … | an |
---|---|---|---|---|---|---|
下标 | 0 | 1 | … | ai-1 | … | n-1 |
访问第一个元素是*(datas+0)
第二个元素是*(datas+1)
第n个元素是*(datas+n-1)