您的位置:首页 > 职场人生

面试题 37 两个链表的第一个公共节点

2013-09-17 16:14 337 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: