现在的位置: 首页 > 综合 > 正文

单链表逆序、判断单链表中是否存在环、两个不存在环的链表是否相交

2013年09月03日 ⁄ 综合 ⁄ 共 3401字 ⁄ 字号 评论关闭

 这个类是几个功能的集合类,注意在制造出环后,判断出有环,之后应该拆除环,否则最后链表的析构函数将因为有环的存在而无法正常退出,将会导致程序四循环。

 


 

 

 

判断两个单链表是否相交
,如果相交,给出相交的第一个

点(两个链表都不存在环)

 

两个链表相交的意思是——从相交点开始往后的所有的节点都是重合的,类似一个"人"字。


比较好的方法有两个:

(一)将其中一个链表首尾相连,检测另外一个链表是否存在环,如果存在,则两个链表相交,而检测出来的依赖环入口即为相交的第一个点。

(二)如果两个链表相交,那个两个链表从相交点到链表结束都是相同的节点,我们可以先遍历一个链表,直到尾部,再遍历另外一个链表,如果也可以走到同样的结尾点,则两个链表相交。

       这时我们记下两个链表length,再遍历一次,长链表节点先出发前进(lengthMax-lengthMin)步,之后两个链表同时前进,每次一步,相遇的第一点即为两个链表相交的第一个点。


第2种方法的代码如下:


 

抱歉!评论已关闭.