演算法系列之七 合併兩個有序鍊錶

2021-08-31 21:21:48 字數 831 閱讀 5175

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。 

示例:

輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

/**

* definition for singly-linked list.

* public class listnode

* }*/

// 方法一:遞迴方式

public static listnode mergetwolists1(listnode l1, listnode l2)

if (l2 == null)

if (l1.val <= l2.val) else

return result;

} // 方法二:非遞迴方式

public static listnode mergetwolists2(listnode l1, listnode l2)

if (l2 == null)

listnode mergenode = null;

if (l1.val <= l2.val) else

listnode temp = mergenode;

while (l1 != null && l2 != null) else

temp = temp.next;

} if (l1 != null)

if (l2 != null)

return mergenode;

}

演算法 合併兩個有序鍊錶

有兩種方法,迭代和遞迴。迭代 不帶頭結點 node merge node head1 node head2 else 當前排序好的鍊錶的末尾節點 node pcurrent head while p1 null p2 null else 還有一方沒有遍歷完的情況 if p1 null pcurren...

演算法 合併兩個有序鍊錶

1.迭代,新建乙個哨兵節點,通過它的next指標指向串聯起兩個鍊錶 比較 l1 和 l2哪乙個比較小,讓哨兵節點的next指向比較小的節點 哨兵節點 l1 l2依次後推,直到又乙個鍊錶為空 如果 l1 為空,則哨兵節點指向l2 注意返回值為哨兵節點的next,因為哨兵節點的第乙個值是隨意給的 cla...

C 演算法之 合併兩個有序鍊錶

題目 合併兩個已經排序好的鍊錶 方法1 兩個鍊錶 比如鍊錶1 1 3 5 7 9 鍊錶2 2 4 6 8 10 跟我們合併兩個陣列一樣,鍊錶1的頭結點 和鍊錶2的頭節點比較,如果鍊錶1頭節點的值大於鍊錶2頭接點的值,那麼鍊錶2的頭結點為合併鍊錶的頭結點,那麼鍊錶1的頭節點繼續和鍊錶2的第二個節點 剩...