线性表
线性表
线性表是具有相同数据类型的n个数据元素的有限序列。
除了第一个元素外,每个元素有且仅有一个直接前驱;除了最后一个元素之外,每个元素有且只有一个直接后继元素
顺序存储
顺序表
- 可以进行随机访问
- 存储密度高
- 删除和插入需要移动大量的元素
- 顺序存储分配需要一段连续的存储空间
线性表的顺序存储结构是一种随机存取的存储结构
一维数组可以不连续,所以和顺序表在逻辑结构上有所不同
存取方式是指读/写方式
链式存储
单链表
头节点和头指针的关系:不管带不带头节点,头指针都始终指向链表的第一个结点,而头节点是带头节点的链表中的第一个结点。
双链表
1 | struct node{ |
循环链表
这里判断是否为空不是看指针为NULL,而是看指针是否指向头节点本身。
- 循环单链表:最后一个结点的指针指向头节点
- 循环双链表
静态链表(数组实现)
预先分配一段连续的内存空间。
顺序表和链表对比
- 存取方式:顺序表可以顺序存取也可以随机存取,链表只能从表头开始依次顺序存取。
- 逻辑结构和物理结构
- 查找、插入和删除操作:时间复杂度
- 空间分配:存储密度,预先分配
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 时光之歌!