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

来源:互联网 发布:淘宝淘客怎么无法打开 编辑:程序博客网 时间:2024/04/29 00:44

输入两个链表,找出他们的第一个公共结点:

struct ListNode{int value;struct ListNode *next;};unsigned int GetListLength(ListNode *pHead){ListNode *pNode = pHead;unsigned int length = 0;while (pNode != NULL){length++;pNode = pNode->next;}return length;}ListNode *FindFirstCommonNode(ListNode *pHead1, ListNode *pHead2){unsigned int nLength1 = GetListLength(pHead1);unsigned int nLength2 = GetListLength(pHead2);int nLengthDif = nLength1 - nLength2;ListNode *pListHeadLong = pHead1;ListNode *pListHeadShort = pHead2;if (nLengthDif < 0){pListHeadLong = pHead2;pListHeadShort = pHead1;nLengthDif = -nLengthDif;}for (unsigned int i = 0; i < nLengthDif; i++){pListHeadLong = pListHeadLong->next;}while ((pListHeadLong != NULL) && (pListHeadShort != NULL) && (pListHeadShort != pListHeadLong)){pListHeadLong = pListHeadLong->next;pListHeadShort = pListHeadShort->next;}ListNode *pFirstCommon = pListHeadLong;return pFirstCommon;}


原创粉丝点击