c链表
数组的缺陷
数组是一块连续的静态存储空间,如果要插入或者删除某一个元素,数组的其他元素就需要大量的移动。
链表
链表是由多个节点组成,每个节点有两个域,数据域用来保存数据,指针域用来保存下一个节点的地址。链表是非连续的。
拿到链表的第一个节点相当于拿到整个链表
链表的优点:插入删除元素不需要移动元素,只需要修改指针
链表的缺点: 1.查找元素效率相对于数组效率低
2.相对于数组多了指针域的空间开销
链表的分类
静态链表,动态链表
单项链表,双向链表,循环链表,单项循环,双向循环
单向链表
单项循环:最后一个节点的指针域指向第一个节点
双向链表,双向链表有两个指针域,前驱和后继,前驱指向前一个节点,后继指向后一个节点
双向循环:最后一个节点的后继指向第一个元素的前驱
带头和不带头节点
带头节点:第一个节点是头节点,固定不动,头节点不保存任何数据
不带头的节点:需要判断插入的节点是不是第一个节点,如果是需要特殊处理
冲冲冲