面试题 37 两个链表的第一个公共节点
struct ListNode{
int val;
ListNode * next;
ListNode(int a):val(a), next(NULL){}
};
ListNode *FindFirstCommonNode(ListNode *head1, ListNode *head2){
if(head1 == NULL || head2 == NULL) return NULL;
int len1 = getListLength(head1);
int len2 = getListLength(head2);
int len;
ListNode *longer , * smaller;
(len1 > len2) ? (longer = head1, smaller = head2, len = len1 - len2):
(longer = head2, smaller = head1, len = len2 - len1);
while(len > 0) longer = longer->next;
while(longer != NULL && longer != smaller){
longer = longer->next;
smaller = smaller->next;
}
return longer;
}
int getListLength(ListNode * head){
int count = 0;
while(head){
++count;
head = head->next;
}
return count;
}
--------------------------------------------------------------------天道酬勤!

浙公网安备 33010602011771号