鍊錶常見問題 有序合併

2021-09-28 17:27:00 字數 769 閱讀 9981

兩個有序鍊錶,合併後仍然有序。

分析: 容易想到的就是找頭,也就是判斷下兩個煉表頭結點val小的。然後採用尾部插入(從head插就覆蓋了),遍歷兩個鍊錶,每次取小的,知道有個鍊錶為空退出。在判斷有無剩餘非空的鍊錶,追加到尾部。

/**

* * @author bohu83

* */

public class mergerlist

} // list合併

public static node mergelistnode(node list1, node list2)

if (list2 == null)

node res = null;

node lastnode = null;// 記錄結果鍊錶的最後乙個結點

node cura = list1;

node curb = list2;

while (cura != null && curb != null) else

lastnode = cura;

cura = cura.next;

} else else

lastnode = curb;

curb = curb.next;

}} // 剩餘插入尾

if (cura != null) else

return res;

} static class node

}}

->1->2->3->4->5->5->8->9 

鍊錶常見問題

思路 快慢指標,慢指標每次移動一步,快指標每次移動兩步,如果存在環,那麼兩個指標一定會在環內相遇 把第二個煉表頭節點的頭接到第乙個鍊錶尾部,然後就轉換成判斷單鏈表是否有環的問題了 當快慢指標相遇後,將乙個指標固定在相遇點,另乙個指標回到鍊錶起始位置,然後兩指標每次都移動乙個node,當兩指標再次相遇...

鍊錶問題(二) 有序鍊錶合併

已知兩個鍊錶head1和head2個字有序,請把他們合併成乙個鍊錶依然有序 包含所有結點,即便大小相同 struct node 方法一 遞迴實現 node merge node head1,node head2 else return head 方法二 迴圈實現 node merge node he...

有序鍊錶的合併問題

題目 已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2的並集新非降序鍊錶s3。輸入格式 輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用 1表示序列的結尾 1不屬於這個序列 數字用空格間隔。輸出格式 在一行中輸出合併後新的非降序鍊錶,數字間用空格分開,結尾不能有多餘空格 若新鍊...