每日编程21之单链表相交,环的相关问题研究
来源:互联网 发布:php curl post 图片流 编辑:程序博客网 时间:2024/05/16 00:38
首先如何判断二个单链表是否相交,也就是所谓的Y型链表问题。
算法很简单,只要分别遍历二个链表,对比二个链表的表尾元素是否相同即可
那么再进一步,如何找到这二个链表的交汇点。
只要在遍历的时候,记录2个链表的长度,M,N,假设M>N则长度为M的链表先走M-N步,然后二个指针同时走,当二个指针第一次相同的地方就是链表的交汇点。
判断一个单链表是否有环,如果有环的话,如何找到起始点,以及环的长度。。也就是说如何获得单链表环的所有信息。
用二个指针,first,second分别遍历链表,遍历结束的条件是
(1)second走到单链表的尽头(second->next==NULL,或second->next->next==NULL),如此则说明单链表没有环。。
(2)对于有环的情况,second会永远的走下去,但终究second会追上first,如此则说明单链表中有环。。
至于起始点和环长度的判断
首先考虑环的长度,在单链表如果有环,则first,second会相遇,从相遇的地方遍历一次,回到相遇点,在这个过程中统计元素的个数,即为环的长度。
关于起始点的问题,可以参考求二个单链表交汇点的思想
具体的说将这个环形单链表做一个抽象的拆分,分成2个单链表
(1)表头为原来单链表的表头,表尾为前述first,second交汇的节点P,长度为N
(2)表头为P,表尾为P,长度为M
OVER!!!
- 每日编程21之单链表相交,环的相关问题研究
- 编程之美3.6:单链表相交的问题及证明
- 编程之美链表相交和环问题
- 单链表的相交问题
- 编程之美----链表相交问题
- 编程之美----链表相交问题
- 每日一题之链表的相交
- 每日一练——两个单链表相交的一系列问题
- 编程之美-编程判断两个链表(可能含环)是否相交以及相交的第一个结点
- 每日编程23之汉诺塔问题
- 编程之美3.6 判断单链表是否存在环,判断两个链表是否相交问题详解
- 链表相交问题【每日一题】
- 单链表相交与环问题
- 链表相交以及链表含环的相关问题
- 求两个单链表是否相交(包括环的问题)
- 7 微软亚院之编程判断俩个链表是否相交,相交的首节点
- 每日编程4之单链表反转
- 每日编程5之逆序输出单链表
- qibuild学习之二------基本的qibuild-CMake函数
- 【Hbase】修改Hbase压缩方式,重启一个regionserver
- Linus修正一个内核的mmap data corrupt bug
- 比较简单的一些题
- PHP100视频教程112:Jquery案例 之 双击编辑异步更新
- 每日编程21之单链表相交,环的相关问题研究
- 解密Facebook产品的开发流程(转自CSDN)
- Android之快捷卸载第三方应用
- DRP总结概览
- [leetCode] Plus One
- HTML5设计原理
- android拖动实现
- 实例说明接口的作用
- 基于stm32f103zet6的DS1302学习