线性表 链试线性表 单向 双向

176 阅读2分钟

a-b-c-d-e-f

1.他们的数据类型一致 2.除了第一个元素a,每一个元素有且只有一个前驱元素。 3.除了最后一个元素f,每一个元素都有且只有一个的直接后继 4.元素之间关系是一对一。

所以从 a 到 f 就是一条线 就是线性表

####线性表有哪些方法:

  • InitList(*L) : 初始化操作,建立一个空的线性表
  • ListEmpty(L): 判断线性表是否为空,若线性表为空 返回true,否则返回true
  • ClearList(*L):线性表清空
  • GetElem(L,i,*e):讲线性表L中的第i个位置的元素返回给e
  • LocateElem(L,e) :在线性表L中查找 给定值e 相等的 元素,如果查找成功,返回该元素在表中的序列号,否则失败返回0
  • ListInsert(*L,i,e):在线性表中第i个位置插入新的元素e
  • ListDelete(*L,i,e):删除线性表中的第i个元素,并且用e 返回其值
  • listLength(L):返回线性表的长度

######线性表顺序存储: 把一定内存空间内,存储相同的数据类型依次放在这块 内存空间

顺序线性表结构代码

 #define MAXSIZE 20
 typedef int ElemType
 typedef struct
 {
   ElemType data [MAXSIZE];
  int length;
 }  Sqlist ;

#######链试线性表(单向)

a-b-c-d-e-f

1.他们的数据类型一致 2.除了第一个元素a,每一个元素有且只有一个前驱元素。 3.除了最后一个元素f,每一个元素都有且只有一个的直接后继 4.元素之间关系是一对一。 5.除了最后一个元素 f 都有后继元素的地址,最后一个为null

所以从 a 到 f 就是一条链试线性表

链试线性表结构代码

   typedef struct Node {
       ElemType     data;
       struct Node *next;
   } Node, \*LinkList;

######链试线性表的比顺序表的 优点(单向) 删除 和 添加 不需要大规模移动,时间复杂度为O(1) 而顺序线性的O(n) ######缺点 多占 一空间 ######同理 双向链表

    typedef struct Node {
      ElemType     data;
     struct Node *next, *prev;
    }Node, *LinkList;

######链试线性表的比顺序表的 优点 (双向) 删除 和 添加 不需要大规模移动,时间复杂度为O(1) 并且可以查找 上前驱元素

######缺点 多占 俩空间

  • ######看我那么可爱n(≧▽≦)n
  • 关注我的微薄 (梁同桌):http://weibo.com/tongrenyinsheng
  • 个人博客: www.liangtongzhuo.com
  • ios 个人写的app (同人音声)ASMR音乐