c/c++ c言链表

数组缺点

1: 如果删除数组中的一个数,要移动后面很多的数据;

2: 如果要插入一个数据,要移动后面的很多数据;

3: 如果要扩容的话,所有的数据都可能要复制一次;

c/c++ c言链表


链表

1: 链表的方式来存储数据: 一根线上串几个葫芦,形成一种”链条”;
c/c++ c言链表
2: 单向链表: 当前节点的数据 与 指向下一个节点的指针;
c/c++ c言链表
3: 双向链表: 当前节点数据与指向上一个节点的指针和指向下一个节点的指针;
c/c++ c言链表


通用链表设计

1:要保存一串数据只需保存头指针即可
c/c++ c言链表

2: 定义一个链接器数据结构;

c/c++ c言链表
;
c/c++ c言链表

2: 要做链表的节点包含这个结构;

c/c++ c言链表

c/c++ c言链表
3: 新节点指针域插入链表头
定义接口

c/c++ c言链表

实现接口

c/c++ c言链表

c/c++ c言链表

4:新节点指针域插入到链表尾部
c/c++ c言链表

c/c++ c言链表

c/c++ c言链表

c/c++ c言链表

5: 遍历列表里面所有的元素

c/c++ c言链表

c/c++ c言链表


c/c++ c言链表


遍历节点改为宏定义

c/c++ c言链表

c/c++ c言链表


删除节点

c/c++ c言链表

c/c++ c言链表

c/c++ c言链表

c/c++ c言链表


总结

1: 理解链表存储数据的方式;
2: 编码实现通用的链表,任何数据结构都可以使用;


–>源码