https://www.cnblogs.com/swing-wang/p/14653890.html
线性表作为数据结构中比较重要的一种,具有操作效率高、内存利用率高、结构简单、使用方便等特点,今天我们一起交流一下单向线性表的头插法和尾插法的区别及优缺点
线性表因为每个元素都包含一个指向下一元素的指针,所以新增、删除、修改起来非常简单迅速
就像火车一样,一节一节的,想增加就加上一节就成,非常方便
那么在插入的时候却有两种方法,头插和尾插
顾名思义,头插就是将新元素插在链表头部,尾插就是将新元素插在链表尾部
个人总结,他们的区别在于,如果是头插法的话,那么新元素直接作为首元结点,next指针指向旧的首元结点即可,非常方便迅速效率高。如果是尾插法的话,添加新元素时需要遍历旧链表,直到某个节点的next指针为空,说明这个节点是尾节点,修改这个尾节点的next指针为新添加的元素即可
综上所述,可以看出他们的区别,也就是优缺点
头插法:
- 插入速度快(不需要遍历旧链表)
- 首元结点每次插入都会变化,首元结点永远是最新的元素
- 遍历时是按照插入相反的顺序进行
- 由于首元结点不断在变化,所以需要额外的维护首元结点的引用,否则找不到首元结点,链表就废了
尾插法:
- 插入速度慢(需要遍历旧链表到最后一个元素)
- 首元结点永远固定不变
- 遍历时是按照插入相同的顺序进行
另外除此之外,也有人从业务角度讨论过两种的区别
现在很多网站或者系统都有一个“最近使用”之类的功能,这种可以考虑用头插法实现
当你使用一个功能的时候,就使用头插法插入一个,查看最近使用的时候直接遍历线性表,即可得到按照最近使用排好序的内容