然后问题就转化为了如何知道哪个链表的长度更长一点,比长度短的链表多了几个结点。解决这个问题的话,我们只需要先设置两个指针,分别指向两个链表的头节点,然后当一个指针指向空了以后开始计数,看另一个指针走多少步才会指向空。
struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { ListNode* L1 = pHead1; ListNode* L2 = pHead2; int l1 = 0,l2 = 0; while(L1 !=NULL || L2!= NULL) { if(L1!=NULL){L1 = L1->next;} else{ l2++; } if(L2 != NULL){L2 = L2->next;} else{ l1++; } } L1 = pHead1; L2 = pHead2; while(l1!=0) { L1 = L1->next; l1--; } while(l2!=0) { L2 = L2->next; l2--; } while(L1!=L2) { L1 = L1->next; L2 = L2->next; } return L1; } };