將兩個單鏈表合併成乙個有序單鏈表

2021-09-19 07:32:50 字數 741 閱讀 4997

3.10

4.將兩個單鏈表合併成乙個有序單鏈表

由於以前初學c++時所寫的**不堪入目,不符合規範性,完整性和魯棒性,於是今日重寫其核心演算法以警示自己。

node*

merge

(node p1head, node p2head)

else

return pmergedhead;

}

思路:因為鍊錶可以由結點輕鬆構造,所以首先需要建立單鏈表的元素,然後選擇構造方式構造單鏈表,本**為後插構造單鏈表。然後有了鍊錶,怎麼合併為乙個有序單鏈表。大體可以先嘗試排序構造的每個單鏈表,然後再在合併的時候進行有序比較排列即可。

#include#include#includetypedef struct node *list;

void creatlist(list *head,int n)

}int list_length(list a);

void maopaosort(list p)

} }}int list_length(list a)

return i;

}void outputlist(list head)

}void merge(list l1, list l2, list *l3)

else

} if (p1 != null)

else }

int main()

合併兩個有序單鏈表

include using namespace std typedef struct nodenode,linklist void creatlist linklist l void insert int n,node p void show linklist l cout num head2 ne...

合併兩個有序單鏈表

思路 第一種 遞迴法 這個方法不好想,遞過去的時候做的事情是找到新的單鏈表的下乙個節點,歸的時候做的是告訴每個節點的next是什麼繫結關係,帶入資料就能知道怎麼回事 public listnode merge listnode a,listnode b if b null listnode newh...

合併兩個有序單鏈表

題目 給定兩個有序單鏈表的頭節點head1和head2,請合併兩個有序鍊錶,合併後的鍊錶依然有序,並返回合併後的鍊錶的頭節點。例如 0 2 3 7 null 1 3 5 7 9 null 合併後的鍊錶為 0 1 2 3 3 5 7 7 9 null 本題考察鍊錶基本操作 關鍵是能寫出時間複雜度o m...