玩命加载中 . . .

线性表


线性表

线性表的概念

线性表是n个类型相同数据元素的有限序列,通常记作(a1, a2, a3,…, an)。

特点:

  • 必存在一个唯一的“第一元素”
  • 必存在一个唯一的“最后元素”
  • 除最后一个元素外,均有唯一的后继
  • 除第一个元素外,均有唯一的前驱

线性表的顺序表示和实现

typedef struct {
    ElementType *elem;  // 存储空间基地址
    int length; // 当前长度
    int listSize;   // 当前分配的存储容量
} SqList;   // 顺序表
  • 线性表的销毁:每一个结点都释放掉,该链表完全不可以再次使用;
  • 线性表的清空:除头结点外的所有结点释放掉,该链表还可以继续使用。

线性表的链式表示和实现

单链表

结构特点:单链表的逻辑次序和物理次序不一定相同
在链式存储结构中以第一个结点的存储地址作为线性表的基地址,通常称它为头指针。

优缺点

优点:插入和删除操作不需要移动数据了
缺点:指针占用了存储空间,增加了内存负担;另外只能顺序查找。

循环链表

单链表的最后一个结点的指针域(尾指针)指向了头指针,构成循环,称作循环链表。
为了方便地在循环链表中进行头插、尾插,设置一个指向表尾的尾指针。

双向链表

单链表的每一个结点再增设一个指针域,用于指向该结点的前驱,即每一个结点有一个数据域和俩指针域。

一元多项式的表示

用顺序表存储

可能造成大量空间浪费

用链式表存储

一般选用链式表存储,更加节省内存


文章作者: 鹿卿
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 鹿卿 !
评论
  目录