兩個有序鍊錶,合併後仍然有序。
分析: 容易想到的就是找頭,也就是判斷下兩個煉表頭結點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不屬於這個序列 數字用空格間隔。輸出格式 在一行中輸出合併後新的非降序鍊錶,數字間用空格分開,結尾不能有多餘空格 若新鍊...