zoukankan      html  css  js  c++  java
  • 数据结构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

    需要注意:

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

  • 相关阅读:
    设置函数环境——setfenv(转)
    全局变量声明的规范化(转)
    利用__index和__newindex实现默认值表、监控表、只读表(转)
    php中的$_GET怎样获取带有井号“#”的參数
    Servlet配置load-on-startup
    LinQ—扩展方法
    CRT
    [C++] 获取IE代理server的账号password
    一步一步写算法(之hash表)
    android之PackageManager简单介绍
  • 原文地址:https://www.cnblogs.com/zw431387/p/11594871.html
Copyright © 2011-2022 走看看