两个链表的公共节点(让链表等长,遍历两个表头)
两个链表的第一个公共结点
http://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46
/* 你要做的事情是 写代码 增加链表长度使A,B两个链表长度相同。 A+B = B+A 。 多遍历一次链表。从A链表开始遍历完后遍历B链表 同理B链表 遍历完后遍历A链表。 直到找到同一个指针。 */ class Solution { public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { ListNode *p1 = pHead1, *p2 = pHead2; while(p1 != p2){ if(!p1) p1 = pHead2; else p1 = p1->next; p2 = p2?p2->next:pHead1; // 当指针为空时,该从另一个链表表头遍历。 } return p1; } };