数据结构概念-单向链表与双向链表区别


单向链表:

由两部分组成:数据域和指针域,每个结点都有一个指针,每个节点指针的指向都是指向自身结点的下一个结点,最后一个结点的head指向为null,对单链表的操作只能从一端开始,如果需要查找链表中的某一个结点,则需要从头开始进行遍历

双向链表:

对于双向链表来说,它的每个节点要指向“直接前驱”和“直接后继”,所以节点类需要含有两个指针域。指向直接前驱的指针使用pre表示,指向后继的指针使用next表示。双向链表是在单向链表基础上的一个改进,每个节点指向其直接前驱和直接后继节点。因此,从双向链表的任意位置开始,都能访问所有的节点

双向链表从节点的结构上可以看出,双向链表的所需的存储空间大于单向链表。同时,对于插入和删除等操作来说,双向链表的节点操作更加复杂,涉及到节点的前后两个节点。

 代码实现可见:https://zhuanlan.zhihu.com/p/109926262

 

 

单向链表

双向链表

查找

只能找到后继

找到前驱和后继

遍历

只能从头到尾遍历,但遍历时候不会死循环

可进可退,但遍历复杂

增删节点

增加删除节点简单

增加删除节点复杂

内存

相比较小

多分配一个前驱指针存储空间

适用场合

节点的增加删除频繁,内存较小场合

需要双向查找节点值的场合


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM