题目:编程判断俩个链表是否相交,给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
为了简化问题,我们假设俩个链表均不带环。
问题扩展:
1.如果链表可能有环列?
2.如果需要求出俩个链表相交的第一个节点列?
题目出自:http://topic.csdn.net/u/20101011/16/2befbfd9-f3e4-41c5-bb31-814e9615832e.html
思路:去迅雷面试过一题类型于上面题目的算法题,这样的题目大概思路是这样:
1. 先判断带不带环.
2. 如果都不带环,就判断尾节点是否相等
3. 如果都带环,判断一链表上俩指针相遇的那个节点,在不在另一条链表上,如果在,则相交,如果不在,则不相交。
4. 如果一个带环一个不带环,遍历带环那个链表,判断带环链表上俩指针相遇的那个节点,在不在另一条链表上,如果在,则相交,如果不在,则不相交。
//第4点考虑欠缺,修改为以下:(多谢zdbill 指出)
4. 如果一个带环一个不带环,则必定不相交,如果相交那么它们并共享同一环。