数据结构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

需要注意:

数组长度是存放线性表的存储空间总长度,一般初始化后不变。
而线性表的当前长度是线性表元素的个数,是会变化的。

posted @ 2019-09-26 22:12  ZhouWei211  阅读(212)  评论(0编辑  收藏  举报