劍指 25 合併兩個排序的鍊錶

2021-08-20 18:28:50 字數 1014 閱讀 2014

題目描述

演算法分析

提交**:

class solution 

listnode* merge2(listnode* phead1, listnode* phead2)

else

listnode* newhead = currnode;

while (p1 && p2)

else

currnode = currnode->next;

} while (p1)

while (p2)

// return newhead->next;

return newhead;

}};

測試**:

// ********************測試**********************

listnode* test(char* testname, listnode* phead1, listnode* phead2)

// list1: 1->3->5

// list2: 2->4->6

void test1()

// 兩個鍊錶中有重複的數字

// list1: 1->3->5

// list2: 1->3->5

void test2()

// 兩個鍊錶都只有乙個數字

// list1: 1

// list2: 2

void test3()

// 乙個鍊錶為空鍊錶

// list1: 1->3->5

// list2: 空鍊錶

void test4()

// 兩個鍊錶都為空鍊錶

// list1: 空鍊錶

// list2: 空鍊錶

void test5()

int main(int argc, char* argv)

劍指offer 25 合併兩個排序的鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。1 非遞迴的方法 如果可以改變鍊錶,直接從頭結點開始依次移動比較兩個鍊錶當前值的大小,把較小的值作為當前結點的下乙個結點。注意 剛剛開始的時候不知道頭結點到底是1的還是2的,所以新建乙個額外的新節點作為輔助 ...

劍指Offer 題25(合併兩個排序的鍊錶)

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。遞迴實現 合併過程中,每次都是從兩個鍊錶中找出較小的乙個來鏈結,因此可以採用遞迴來實現 當任意乙個鍊錶為null時,直接鏈結另乙個鍊錶即可 其餘情況只需要在兩個鍊錶中找出較小的乙個結點進行鏈結,該結點的next值繼續通過遞...

劍指offer25 合併兩個排序的鍊錶

題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然使遞增排序的。例如 輸入下圖的鍊錶1和鍊錶2,則合併之後的公升序鍊錶如圖鍊錶3所示。鍊錶定義如下 思路 從兩個鍊錶的頭結點開始,比較兩個鍊錶的頭結點的值大小,值小的結點就是合併後鍊錶的頭結點,繼續合併鍊錶中剩餘的節點,在兩個鍊錶中剩下...