合併兩個排序的鍊錶 17

2021-08-09 14:37:18 字數 917 閱讀 7717

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。

要合併兩個遞增的鍊錶,首先找出兩個鍊錶的頭結點中較小的乙個就為合併後新鍊錶的頭結點,之後再依次將兩個鍊錶中的結點值進行相比較,依次將較小值在新鍊錶中進行尾插,直到其中乙個鍊錶遍歷完成,將剩餘鍊錶直接鏈在新鍊錶的尾部就可以了,因為鍊錶本來就是有序遞增的;

程式設計如下:

#include #include using namespace std;  template struct listnode//鍊錶結點結構;  template listnode* buy_node(t data)//建立乙個鍊錶結點  template void init_list(listnode** node, t data)//初始化鍊錶  template void push_node(listnode*& head, t data)//插入鍊錶結點       listnode* tmp = head;    while(tmp->_next != null)        tmp->_next = buy_node(data);}  template void print_list(listnode* head)//列印鍊錶    cout<_next>_next = tmp1;    return newhead;}//實現2:遞迴template listnode* mergelist(listnode* list1, listnode* list2)    else        return newhead;}int main()
執行程式:

從上面程式可以看出來,用遞迴比迴圈看起來更好理解和簡潔。

《完》本文出自 「敲完**好睡覺zzz」 部落格,請務必保留此出處

17 合併兩個排序的鍊錶 JAVA

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。解題思路 利用遞迴來完成,首先要解決好空鍊錶的情況,1.鍊錶1為空,直接返回鍊錶2。2.鍊錶2為空,直接返回鍊錶1.3.鍊錶1 2都為空則返回null。其次開始比較鍊錶1 2的頭結點的大小,建立乙個結點new...

17 合併兩個有序鍊錶

題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。思路 遞迴與非遞迴求解,小數放在前面。實現 解法一 遞迴,時間複雜度 o m n 空間複雜度 o m n public listnode mergetwolists listnode list1,l...

合併兩個排序鍊錶

struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...