有兩個遞增排序的鍊錶,把他們合併後的節點仍然是遞增排序的。
這個問題的思路比較簡單,首先比較p1,p2頭結點,把較小的節點(比如是p1)賦值給mergehead節點,然後,把p1->next跟p2比較,以此類推,每次比較兩個節點,所以這裡可以考慮用遞迴。
#include #include "listcommon.h"
using namespace std;
listnode* mergelist(listnode* phead1, listnode* phead2)else if(phead2 == null)
listnode* pmergehead = null;
//遞迴處理兩個節點
if(phead1->m_nvalue < phead2->m_nvalue)else
return pmergehead;
}int main(int argc, char* argv){
listnode* phead1 = createlistnode(1);
listnode* phead3 = createlistnode(3);
listnode* phead5 = createlistnode(5);
listnode* phead7 = createlistnode(7);
connectlistnodes(phead1, phead3);
connectlistnodes(phead3, phead5);
connectlistnodes(phead5, phead7);
cout<<"list 1:"<
pc:~/algorithm$ g++ listcommon.cpp mergelist.cpp -o mergelist
pc:~/algorithm$ ./mergelist
list 1:
print list begin ---13
57print list end
list 2:
print list begin ---24
68print list end
merged list :
print list begin ---12
3456
78print list end
鍊錶 合併有序鍊錶
題目 將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 題解我們這裡利用到了乙個前哨節點,因為兩個鍊錶實際上是已經排好序了,所以我們只需要比較兩個節點誰大誰小,找到小的接上去,然後那個...
鍊錶 合併有序鍊錶
將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。leetcode21 class solution else head head.next head.next l1 null?l2 l1 return result.next class solut...
鍊錶的合併
兩個線性表a,b,均以單鏈表做儲存結構,編寫演算法將表a和表b合併成乙個按元素值遞增有序排列的線性表c,要求用原表的結點空間存放表c define null 0 include stdio.h include malloc.h typedef struct lnode lnode,linklist ...