剑指offer:两个链表的第一个公共结点输入两个链表,找出它们的第一个公共结点。

来源:互联网 发布:ftp服务器软件 serv 编辑:程序博客网 时间:2024/05/15 05:17

输入两个链表,找出它们的第一个公共结点。如果没有公共节点,则输出NULL;

struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};ListNode* FindFirstCommonNode(ListNode *pHead1, ListNode *pHead2) {int len1 = 0, len2 = 0;int sublen = 0;ListNode* temp1 = pHead1;ListNode* temp2 = pHead2;if (pHead1 == NULL || pHead2 == NULL)return NULL;/* 求两个链表的长度 */while (temp1){len1++;temp1 = temp1->next;}while (temp2){len2++;temp2 = temp2->next;}temp1 = pHead1;temp2 = pHead2;/* 判断两个链表哪个比较长 */if (len1 > len2){sublen = len1 - len2;while (sublen--){temp1 = temp1->next;}}else if (len2 > len1){sublen = len2 - len1;while (sublen--){temp2 = temp2->next;}}/* 找公共节点 */while (temp1 != NULL){if (temp1 == temp2)break;temp1 = temp1->next;temp2 = temp2->next;}return temp1;}



0 0
原创粉丝点击