求兩個已排序單鏈表中相同的資料。

2021-08-18 06:35:04 字數 876 閱讀 3998

void unionset(slistnode* l1, slistnode* l2)

else

else}}

return;

}

求兩個已經排序的鍊錶中的相同資料。前提是這兩個鍊錶已經排好順序了,這樣問題就簡單了很多,和之前合併兩個有序鍊錶是一樣的道理。

assert(l1

|| l2

);首先對兩個鍊錶進行判斷如果有乙個為空的話就直接斷言。

while

((l1

!=null

)&&(

l2!=

null

))else

else}}

return;}

之後用乙個while迴圈來實現迴圈語句,鍊錶裡邊到目前用的最多的迴圈就是while迴圈,因為在不確定鍊錶資料個數的情況下for迴圈是沒辦法來確定結束條件的。

進去之後首先判斷l1和l2所指向的資料,注意這裡不要寫成(l1

== l2),

一定要判斷兩個指標所指向的資料,雖然這是乙個很簡單的問題,但是有時候真的會忽略這些小細節if(

l1->_data ==

l2->_data)

如果資料相等那就把這個資料輸出,因為兩個資料相等,隨意輸出乙個指標的資料就行,然後將兩個指標同時往後移動乙個。

if((

l1->_data) > (

l2->_data))

else

}如果不想等的話,因為鍊錶已經排序了,所以讓資料小的那個往後移動乙個。一直到其中乙個鍊錶結束了跳出while迴圈之後就可以了。

求兩個單鏈表的和

出處 兩個單鏈表 singly linked list 每乙個節點裡面乙個0 9的數字,輸入就相當於兩個大數了。然後返回這兩個數的和 乙個新list 這兩個輸入的list長度相等。要求是 1.不用遞迴。2.要求演算法在最好的情況下,只遍歷兩個list一次,最差的情況下兩遍。這是陳利人同學今天發在待字...

求兩個單鏈表的和

出處 兩個單鏈表 singly linked list 每乙個節點裡面乙個0 9的數字,輸入就相當於兩個大數了。然後返回這兩個數的和 乙個新list 這兩個輸入的list長度相等。要求是 1.不用遞迴。2.要求演算法在最好的情況下,只遍歷兩個list一次,最差的情況下兩遍。這是陳利人同學今天發在待字...

合併兩個排序的單鏈表

題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是依照遞增排序的。分析 合併單鏈表,須要找到頭結點,對照兩個煉表頭結點後,確定頭結點,再確定頭結點下乙個結點,迴圈遞迴的如前面一樣操作確定每乙個結點位置,同一時候考慮邊界條件,假設兩個鍊錶為空。則肯定無需合併了,就是空鍊錶,假設乙個鍊...