鍊錶中的公共節點

2021-07-22 02:02:49 字數 1102 閱讀 1337

求取兩煉表中的第乙個公共節點。

由於鍊錶中的節點都有乙個指向下乙個節點的指標,當某個節點公共時,意味著該公共節點指向的下乙個節點也公共,即第乙個公共節點後的所有節點公共。因此,兩條鍊錶按公共節點重疊後呈現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 採用遞迴的方法從下乙個不重複的點開...