求取兩煉表中的第乙個公共節點。
由於鍊錶中的節點都有乙個指向下乙個節點的指標,當某個節點公共時,意味著該公共節點指向的下乙個節點也公共,即第乙個公共節點後的所有節點公共。因此,兩條鍊錶按公共節點重疊後呈現y型。
我們可以先計算兩條鍊錶的長度差,該長度差就是長鍊表優先要走的步數,之後兩鍊錶就乙個乙個對應比較,直到找到第乙個公共節點為止。
具體**如下:
//#include "stdafx.h"
#include#include#include#includeusing namespace std;
struct linknode;
unsigned int getlistlength(linknode* phead)
return i; }}
linknode* findfirstcommonnode(linknode *phead1, linknode *phead2)
else
} for (int i = 1; i <= min(getlistlength(phead1), getlistlength(phead2));i++)
return null;
}linknode* createlink(int *a, int n)
newnode->m_key = a[i];
newnode->next = null;
if (!head)
else
//cout << i } return head;
}int _tmain(int argc, _tchar* argv)
; int b = ;
head1=createlink(a, 5);
head2 = createlink(b, 2);
linknode *p1 = head1;
linknode *p2 = head2;
//int len = getlistlength(head);
while (p2->next)
while (p1->m_key!=6)
//cout p1=findfirstcommonnode(head1, head2);
cout << p1->m_key <
兩個鍊錶的公共節點
輸入兩個鍊錶,找出它們的第乙個公共結點。因為兩個鍊錶的長度可能不一樣,首先遍歷兩個鍊錶求出兩個鍊錶的長度,假設乙個鍊錶的長度為m,另乙個鍊錶的長度為n,得到m和n的差值dif,讓比較長的那個鍊錶先走dif步,然後再同時遍歷兩個鍊錶,直到遇到相同的節點為止。python coding utf 8 cl...
鍊錶 刪除鍊錶中重複的節點
刪除鍊錶中重複的節點 方法一 採用遞迴的方法,但這種方法在鍊錶無重複節點時效率不高 function deleteduplication phead if phead.val phead.next.val return deleteduplication node 採用遞迴的方法從下乙個不重複的點開...
鍊錶 刪除鍊錶中重複的節點
刪除鍊錶中重複的節點 方法一 採用遞迴的方法,但這種方法在鍊錶無重複節點時效率不高 function deleteduplication phead if phead.val phead.next.val return deleteduplication node 採用遞迴的方法從下乙個不重複的點開...