可能重复:
Finding the intersecting node from two intersecting linked lists
给出两个大的链表,其中
b)可以相交
找到交叉点的节点。通过交集,我不是指他们的价值观。我的意思是节点很常见。即,列表A和列表B中的两个不同节点指向同一节点
E.g。
3->1->2->4->NULL
^
|
5->4->3
3->1->2->NULL
^
|
9->2->3
PS: 3.不允许使用哈希表。
答案 0 :(得分:6)
要查找是否存在交叉点,只需检查两个列表的“结尾”是否具有相同的地址。但这并非绝对必要。
通过从最后一个节点到第一个节点[*]的链接,将第一个列表转换为循环。然后使用您最喜欢的循环查找算法从第二个列表的开头开始,找到循环及其起点。如果没有交叉点,则在第二个列表中找不到循环。如果在第二个列表中找到一个循环,那么循环的起点就是交点。
[*]如果您被允许修改数据,请执行此操作。否则,写一个特殊情况特殊节点的“前进”功能。
答案 1 :(得分:3)
如果列表与它们的最后节点相交是相同的