单链表,双链表,循环链表的区别
来源:互联网 发布:rt809f编程器驱动程序 编辑:程序博客网 时间:2024/06/05 19:59
单向链表(单链表)
单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向表中的下一个节点,而最后一个节点则 指向一个空值NULL。单向链表只可向一个方向遍历。查找一个节点的时候需要从第一个节点开始每次访问下一个节点,一直访问到需要的位置。也可以提前把一个节点的位置另外保存起来,然后直接访问。
双向链表,(双链表) 双向链表中不仅有指向后一个节点的指针,还有指向前一个节点的指针。第一个节点的"前连接"指向NULL,最后一个节点的"后连接"指向NULL。这样可以从任何一个节点访问前一个节点,也可以访问后一个节点,以至整个链表。一般是在需要大批量的另外储存数据在链表中的位置的时候用。由于另外储存了指向链表内容的指针,并且可能会修改相邻的节点,有的时候第一个节点可能会被删除或者在之前添加一个新的节点。这时候就要修改指向首个节点的指针。有一种方便的可以消除这种特殊情况的方法是在最后一个节点之后、第一个节点之前储存一个永远不会被删除或者移动的虚拟节点,形成一个循环链表。这个虚拟节点之后的节点就是真正的第一个节点。这种情况通常可以用这个虚拟节点直接表示这个链表。
循环链表 在一个循环链表中, 首节点和末节点被连接在一起。这种方式在单向和双向链表中皆可实现。要转换一个循环链表,你开始于任意一个节点然后沿着列表的任一方向直到返回开始的节点。循环链表可以被视为"无头无尾"。循环链表中第一个节点之前就是最后一个节点,反之亦然。循环链表的无边界使得在这样的链表上设计算法会比普通链表更加容易。对于新加入的节点应该是在第一个节点之前还是最后一个节点之后可以根据实际要求灵活处理,区别不大。另外有一种模拟的循环链表,就是在访问到最后一个节点之后的时候,手工跳转到第一个节点。访问到第一个节点之前的时候也一样。这样也可以实现循环链表的功能,在直接用循环链表比较麻烦或者可能会出现问题的时候可以用。
1 0
- 单链表,双链表,循环链表的区别
- 单链表,双链表,循环链表的区别
- 单链表,双链表和循环链表之间的区别详解
- 两个循环的区别
- 循环结构的区别
- C语言单链表,双向链表,循环单链表,循环双链表的基本操作
- for循环和forall循环的区别
- 空循环和无穷循环的区别
- for循环和while循环的区别
- while循环和for循环的区别
- for循环跟while循环的区别
- for循环与while循环的区别
- while循环与for循环的区别
- for循环与while循环的区别
- for循环和while循环的区别
- for循环和foreach循环的区别?
- for循环与while循环的区别
- 基于单链表的循环链表以及双链表的实现
- 更改屏幕分辨率
- UML中的9种图之用例图
- POJ3414 模拟倒水问题 BFS记录路径
- 破解justinmind方法,简单有效
- ps命令的基本使用方法
- 单链表,双链表,循环链表的区别
- 在Mac OS X 用C++编写OpenGL程序
- QQ网页弹窗
- Mac平台学习OpenGL[1]
- LRU与LFU调度算法
- Linux vmstat命令实战详解
- Bower执行报错解决方法 : ENOGIT git is not installed or not in the PATH
- BZOJ 3823 定情信物 递推
- java学习之-final关键作用