12-3-30关于链表相交

转载 2012年03月30日 13:31:28

1判断链表是否有环?

bool IsExitsLoop(sList *head){
sList *slow=head;
sList *fast=head;
while(fast && fast->next){
slow=slow->next;
fast=fast->next->next;
if(slow==fast) break;
}


return !(fast == NULL || fast->next==NULL);
}


2 找环的入口点

设整个链表长度为L,环长度为r,入口环与相遇点距离为x,起点到环入口点的距离为a。

对于slow走了s,则fast走了2s

s=a+x;

2s=a+nr+x;

==>a+x=nr;

设相遇点到入口环的距离为y=r-x,==>a=(n-1)r+y 

因此我们设定一个指针p,指向相遇点,指针q从head出发,这样他们一定会在环入口相遇,由此我们得到环入口


sList *findLoopPort(sList *head){
sList *slow=head,*fast=head;
while(fast && fast->next){
slow=slow->next;
fast=fast->next->next;
if(slow==fast) break;
}


if(fast==NULL || fast->next==NULL){
return (sList *)NULL;
}


slow=head;
while(slow!=fast){
slow=slow->next;
fast=fast->next;
}
return slow;
}


3判断两个链表是否相交(链表不存在环)

 方法一:

将其中一个链表,首尾相连,检测两外一个链表是否有环,如果存在,则代表两个链表相交,检测出来的环入口点,即为相交点

方法二:

如果两个链表相交,则从相交点开始,到链表结束都是相同的节点,我们可以先遍历一个链表直到尾部,再遍历一个链表,如果也走到相同的尾部,则相交。

此时我们记录两个链表的length,利用length1-length2,然后这样使得两个链表出发点到相交点长度是一致的,之后两个链表指针相同步伐前进,相遇的第一个点为

相交点。



《编程之美》——编程判断两个链表是否相交

问题: 给出两个链表的头指针,判断这两个链表是否相交。假设两个链表均不带环。 分析与解法:【解法一】 如果两个链表都无环,则可以把第二个链表接在第一个链表后面,如果得到的链表有环,则说明这两个链...
  • zengzhen_CSDN
  • zengzhen_CSDN
  • 2015年11月10日 16:41
  • 912

两个单链表相交问题

两个单链表相交,树中两个节点最近公共祖先
  • Li_Ning_
  • Li_Ning_
  • 2016年06月16日 18:51
  • 1243

Java代码 判断两个链表是否相交

题目:判断两个单向链表是否相交,假设两个链表均不存在环 算法思路:有两种方法,第一种方法就是在其中一个链表上顺序遍历每个节点,每遍历一个节点的时候,在另外一个链表上顺序遍历每个节点,如果便利过程中发...
  • yangmm2048
  • yangmm2048
  • 2015年04月07日 19:55
  • 1362

Interview----判断两个链表是否相交?

题目描述: 判断两个单链表是否相交?假设链表没有环。 假如链表有环呢?  1.  假如没有环 那么如果两个链表相交的话,必然最后的节点一定是同一个节点。所以只需要各自扫描一遍链表,找到...
  • u012653791
  • u012653791
  • 2014年02月28日 12:37
  • 1153

50. 腾讯面试题:两个单链表相交,求开始相交的点

腾讯面试题:两个链表相交,求开始相交的点 腾讯的技术面试很喜欢问算法类的问题,准备去腾讯面试前,要好好看下算法的东西。 这题如果求两个链表是否相交,或者求相交的终点好求,要求开始相交的点,不好求。...
  • hhh3h
  • hhh3h
  • 2014年08月15日 23:26
  • 1104

判断两个单链表是否相交--java实现

题目描述:单链表可能有环,也可能无环。给定两个单链表的头节点 head1 和 head2, 这两个链表可能相交,也可能不相交。请实现一个函数,如果两个链表相交,请返回相交 的第一个节点;如果不相交,...
  • happymatilian
  • happymatilian
  • 2015年08月20日 17:46
  • 3106

java 判断两个单链表是否相交

题目单链表可能有环,也可能无环。给定两个单链表的头节点 head1 和 head2, 这两个链表可能相交,也可能不相交。请实现一个函数,如果两个链表相交,请返回相交的第一个节点;如果不相交,返回 nu...
  • mccand1234
  • mccand1234
  • 2016年10月22日 15:05
  • 1218

编程之美:链表有环,如何判断相交

如果两个链表无换,判断是否相交很简单,判断两个环的最后一个节点指针是否相等即可。 题目描述:上面的问题都是针对链表无环的,那么如果现在,链表是有环的呢?上面的方法还同样有效么? 分析:如果...
  • gao1440156051
  • gao1440156051
  • 2016年06月16日 09:38
  • 806

【面试题】-判断两个单链表是否相交并求出相交的第一结点

问题描述判断两个单链表是否相交,如果相交,给出相交的第一个点(假设两个链表都不存在环)。相交的链表示意图如下所示。 解题思路方法一两个没有环的链表如果是相交于某一结点,如上图所示,这个结点后面都是共...
  • zwhlxl
  • zwhlxl
  • 2015年05月15日 15:53
  • 1463

判断两个链表是否相交并找出交点-笔记

判断两个链表是否相交的方法 相交链表的特征:如果两个链表相交,那么交点以后的节点都相同,否则不相交。1 暴力搜索法这个地球人都懂得2 节点hash法两个链表的节点进行hash,然后判断节点hash值...
  • renwotao2009
  • renwotao2009
  • 2016年04月12日 21:50
  • 1027
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:12-3-30关于链表相交
举报原因:
原因补充:

(最多只允许输入30个字)