鍊錶合併(6)

2021-08-07 17:10:18 字數 1126 閱讀 1490

有兩個遞增排序的鍊錶,把他們合併後的節點仍然是遞增排序的。

這個問題的思路比較簡單,首先比較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 ...