思路
使用两人指针 a,b分别指向两个鞋表 Head1,Head2的头结点,然后同时分别逐结点遍历,
当 a 到达链表 Head1的末尾时,重新定位到链表Head2的头结点;
当 b 到达链表 pHead2 的末尾时,重新定位到链表 pHead1的头结点。
当双指针相遇时,所指向的结点就是第一个公共结点
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
*
* @param pHead1 ListNode类
* @param pHead2 ListNode类
* @return ListNode类
*/
struct ListNode* FindFirstCommonNode(struct ListNode* pHead1, struct ListNode* pHead2 ) {
// write code here
struct ListNode *a = pHead1;
struct ListNode *b = pHead2;
while(a != b)
{
a = a ? a->next : pHead2;
b = b ? b->next : pHead1;
}
return a;
}