两个链表的第一个公共结点

来源:互联网 发布:网络直播举报 编辑:程序博客网 时间:2024/06/06 09:37
  • 输入两个链表,找出它们的第一个公共结点。
/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) :            val(x), next(NULL) {    }};*/class Solution {public:    ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {        ListNode * p1 = pHead1, *p2 = pHead2;        while(p1 && p2){            p1 = p1->next;            p2 = p2->next;        }        ListNode * helper = NULL;        if(p1 == NULL && p2 == NULL)            p1 = pHead1, p2 = pHead2;        else if(p1){            helper = pHead1;            while(p1){                p1 = p1->next;                helper = helper->next;            }            p1 = helper;            p2 = pHead2;        }else{            helper = pHead2;            while(p2){                p2 = p2->next;                helper = helper->next;            }            p1 = pHead1;            p2 = helper;        }        while(p1 != NULL && p2 != NULL && p1 != p2){            p1 = p1->next;            p2 = p2->next;        }        return p1;    }};
0 0
原创粉丝点击