zoukankan      html  css  js  c++  java
  • 一、表

    一、ADT表

      线性表是一种非常灵活的结果,可以根据需要改变表的长度,也可以在任何位置对元素进行访问,插入或者删除操作.另外,还可以将多个表连接成一个表,或者把一个表拆分成多个表

    1、ADT表定义

    线性表List是n个相同类型数据元素a1,a2,...an构成的有限序列.表示成List=(a1,a2...,an)

    2、表长

    线性表中元素的个数,n=0时为空表

    3、表的前驱和后继

    线性表的ai领先于ai+1,则ai+1是ai的后继,ai-1是ai的前驱。

    4、抽象数据类型List

    5、线性表的基本运算

      5.1、ListEmpty(L):测试表L是否唯恐

      5.2、ListLength(L):表L的长度

      5.3、ListLocate(x,L):元素x在表L中的位置,若x在表中重复出现多次,则返回最前面的x位置

      5.4、ListRetrieve(k,L):返回表L的位置k处的位置的元素。表中没有位置k时,该运算无意义

      5.5、ListInsert(k,x,L):在表L的位置k之后插入元素x,并将原来占据该位置的元素及其后面的元素依次后移一个位置,如果表中没有位置k,则运算无意义。

      5.6、ListDelete(k,L):从表L中删除位置k处的元素,并返回该位置删除的元素。表中没有这个位置k时,运算无意义。

      5.7、PrintList(L):将表L中所有的元素按位置的先后顺序先后输出。

    6、用数组实现表

      6.1、顺序表:一组地址连续的存储单元(数组)存放一个线性表叫顺序表

      6.2、元素地址计算:location(ai)=location(a0)+i*num  location(a+i)=location(ai)+num

      注:num是一个元素占用的存储单元个数,location(ai):表示第i个元素的地址。

      6.3、顺序表的特点:实现逻辑上的相邻(物理地址相邻)  实现随机存取

      6.4、结构的定义:

    //数据元素不是简单类型时,可以定义结构体数组
    #define maxsize 1000
    int data[maxsize];
    typedef struct test
    {
        int num;
        char name[20];
        char author[10];
        char publisher[30];
        float price;
    }card;
    card library[maxsize];

      6.4、用数组实现的ADT表的类型

      用数组实现表时,为了适应表的元素类型,将表类型List定义为一个结构体

    typedef struct alist *List;//定义alist的含义
    typedef struct alist{
        int n;//表长度,n=0,表为空
        int maxsize;//线性表的最大长度
        ListItem *table;//表元素数组
    }Alist;

    顺序表List的基本运算实现:

    1、初始化函数:分配大小为size的空间给表数组table,并返回初始化为空的表

  • 相关阅读:
    解决web网页访问慢的问题
    Django安装配置(for Mac)
    Django安装(for Mac)
    HTML5中的新事件
    关于http-equiv
    【转】@fant-face
    textarear中的value....还是...innertext
    清除浮动的元素的margin-top触碰不到,浮动元素的边界
    常用排序算法总结(一)
    JS常用特效方法总结
  • 原文地址:https://www.cnblogs.com/drq1/p/8576562.html
Copyright © 2011-2022 走看看