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

判断两个链表是否有公共节点并返回第一个公共节点

2013年10月09日 ⁄ 综合 ⁄ 共 1627字 ⁄ 字号 评论关闭

判断两个链表是否有公共节点的方法最简单的就是遍历到每个链表的最后一个节点,看他们是否是同一个节点:如果是同一个节点的话,那么两个链表肯定有公共节点:

解释:因为链表是线性结构,不想树那样的非线性分叉结构

从链表的定义,就知道:

 

一个链表有唯一的一个后序节点:如果两个链表中出现了公共节点,那么从该点开始,后面的节点都是公共的,肯定链表的最后一个节点也是公共的。于是不管三七二十一,遍历到最后链表的一个节点,判断两个节点是不是同一个节点就可以了。

但是这里我们要返回第一个公共节点,所以还得寻去他法:

1.如果两个链表有长度一样,我们从第一个逐个遍历节点,再比较是不是同一个节点就可以了;

2.如果两个链表长度不一样,我们应该先让长的链表从表头“走” len1 - len2步(len1为list1的长度,len2为list2的长度),然后按照1中方法进行操作即可。

 

 

抱歉!评论已关闭.