目录
线性表特点
- 同一性:所有数据属于同一数据类型
- 有穷性:线性表的长度就是表中数据元素的个数
- 有序性:线性表中相邻元素存在着序偶关系
顺序表
- 顺序表是地址连续的存储单元
- 依次存储线性表中的数据元素
优点:
- 无须为表示结点间的逻辑关系而增加额外的存储空间(因为逻辑上相邻的元素的存储的物理位置也是相邻的)
- 可方便地随机存取表中的任意元素,效率高
缺点:
- 插入或删除运算不太方便,需移动大量的节点,其效率较低
- 由于顺序表要求占有连续的存储空间,存储分配只能预先进行静态分配
- 表的容量难以确定扩充
- 造成存储空间碎片
线性链表
- 采用链式存储的线性表
- 从链接方式的角度来看:分为单链表、循环链表、双链表
- 从实现角度看:分为动态链表和静态链表
单链表
此线性表中的每个结点只有一个 next 指针域
特点
- 头指针唯一确定单链表
- 顺序存取
- 结点的逻辑顺序和物理顺序可以不一致
- 链表空间根据需要确定,运行时分配空间
- 结点包括两个域:数据域(data)用来存储结点的值,指针域(next)用来存储数据元素的直接后继的地址(或位置)
- 单链表中每个结点的存储地址存放在其前驱结点的指针域中,由于线性表中的第一个结点无前驱,所以应设一个头指针指向第一个结点
头插法建表:得到的单链表的逻辑顺序与输入元素相反,也称逆序建表法
尾插法建表:顺序一致
循环链表
将单链表最后一个结点的指针域有 NULL 改为指向表头结点,就得到了单链形式的循环链表