題目描述
演算法分析
提交**:
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所示。鍊錶定義如下 思路 從兩個鍊錶的頭結點開始,比較兩個鍊錶的頭結點的值大小,值小的結點就是合併後鍊錶的頭結點,繼續合併鍊錶中剩餘的節點,在兩個鍊錶中剩下...