1.链表分类
- 单向链表
- 双向链表
- 循环链表
2.链表与数组的区别
- 空间
- 数组 内存中连续,每个元素占用内存相同,必须事先定义长度
- 链表 内存中顺序存储,通过元素中的指针联系到一起
- 索引
- 数组 通过下标读取,快
- 链表 通过线性移动读取,慢
- 修改
- 数组 增删插入麻烦
- 链表 增删插入方便
- 逻辑
- 数组 必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
- 链表 动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项
- 内存
- 数组 从栈中分配空间, 对于程序员方便快速,但自由度小。
- 链表 从堆中分配空间, 自由度大但申请管理比较麻烦.一般有两种方法来申请内存,new、和malloc