經典演算法學習 合併兩個有序鍊錶

2021-07-17 02:02:24 字數 629 閱讀 1864

類似的,合併兩個有序的陣列或者鍊錶也是劍指offer中的經典題型。題目描述如下:輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是按照遞增排序的。我這裡以合併鍊錶來實現。

在這裡,並不需要去建立乙個新的鍊錶,只要有三個節點指標就行,第乙個節點指標node1指向第乙個鍊錶,第二個節點指標node2指向第二個鍊錶,第三個節點指標node3指向新的鍊錶。簡單的示意圖如下:

當下乙個節點在第乙個鍊錶中時,node3指向該節點,node1++,以此類推。直到某乙個鍊錶為空時,把另乙個鍊錶全部接到node3之後。注意題目的要求是兩個鍊錶都是有序的。完整**上傳至  。

核心**如下:

void mergelist(node *pfirstlist, node *psecondlist, node **pmergedlist)

else

pmergedmove = pmergedmove->next;

}while (pfirstmove != null)

while (psecondmove != null)

}

演算法學習 合併兩個有序的鍊錶

將兩個非遞減鍊錶合成乙個,並使得合成後的鍊錶已然是有序 非遞減 鍊錶 public class listnode public class solution else if list2 null temp.next list2 迴圈結束如果list2有空餘節點,把list2連線到newlist的最後...

演算法 合併兩個有序鍊錶

有兩種方法,迭代和遞迴。迭代 不帶頭結點 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...