1. 顺序表
1.1 分类
- 简单顺序表
- 索引顺序表
- 数据可以很不规则
- 数据物理排列可以不要求
- 索引的格式规整
1.2 实现方式
以更改是否方便为准
- 一体式
- 分离式
1.3 扩容问题
- 每次定量增长:节省空间,操作频繁
- 每次按比例增长:浪费
1.4 操作
- 增加
- 保存尾端插入
- 非保存
- 保存
- 删除:和增加类似
- Python-list 操作
- 分离技术实现的动态表
- 空表:8 个位置
- 插入满:扩大 4 倍
- 若果已经很大(如,>50000):加 1 倍
2. 链表
2.1 分类
- 单向链表
- 单向循环链表
- 双向链表
2.2 链表相关操作
- is_empty() 判断链表是否为空
- length() 返回链表的长度
- traverse() 遍历
- add_first(item) 在头部添加一个结点(节点)
- append(item) 在尾部添加一个结点
- insert(pos, item) 在指定位置 pos 添加一个结点
- remove(item) 删除一个结点
- search(item) 查找结点是否存在
2.3 链表 VS 顺序表
下方 n 表示时间复杂度为 O(n),同理,1 指 O(1)
- 访问元素:n, 1
- 头部插入:1, n
- 尾部:n, 1
- 中间插入:n, n
3. 关于代码实现
- 代码见下一篇
- 内容包括
- 单向列表
- 单向循环列表
- 双向列表