题目描述:
编写一个程序,找到两个单链表相交的起始节点。
题解:
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB)
{
ListNode* p = headA;
ListNode* q = headB;
while(p != q)
{
p == NULL? p=headB:p = p->next;
q == NULL? q=headA:q = q->next;
}
return p;
}
};
解题思路:
注意这种走法,两个指针走的路时一样长的,如果两个链表有交点,那么两个指针必定在交点处相遇。这里,如果两指针没有交点的话,将量表尾部的NULL作为他们共同的交点返回。