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一次,最差的情況下兩遍。這是陳利人同學今天發在待字...
合併兩個排序的單鏈表
題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是依照遞增排序的。分析 合併單鏈表,須要找到頭結點,對照兩個煉表頭結點後,確定頭結點,再確定頭結點下乙個結點,迴圈遞迴的如前面一樣操作確定每乙個結點位置,同一時候考慮邊界條件,假設兩個鍊錶為空。則肯定無需合併了,就是空鍊錶,假設乙個鍊...