数据结构3
抽象数据类型:
我们对已有的数据类型进行抽象,就有了抽象数据类型。
抽象数据类型(ADT)是指一个数学模型及定义在该模型上的一组操作。
抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。比如 1 + 1 = 2 这样一个操作,在不同的CPU的处理上可能不一样,但由于其定义的数学特性相同,所以在计算机编程者看来,是相同的。
“抽象”的意义在于数据类型的数学抽象特征。而且抽象数据类型不仅仅指那些已经定义并实现的数据类型,还可以是自己定义的数据类型。
抽象数据类型的标准格式:
ADT
抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作
endADT
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,i,e)
删除线性表L中第i个位置元素,并用e返回其值
ListLength(L)
返回线性表L中元素的个数
线性表顺序的存储的结构代码:
#defind MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length; //线性表当前长度
}SqList;
这里封装了一个结构,事实上就是对s数组进行封装,增加了个当前长度的变量。
总结下,顺序存储结构封装需要的三个属性:
- 储存空间的起始位置,数组datam,它的存储位置就是线性表存储空间的存储位置。
- 线性表的最大储存容量:数组长度MAXSIZE
- 线性表的当前长度:length
需要注意:
数组长度是存放线性表的存储空间总长度,一般初始化后不变。
而线性表的当前长度是线性表元素的个数,是会变化的。