C 實現無序單鏈表合併為有序鍊錶

2021-08-28 13:43:19 字數 1038 閱讀 9273

#include

using namespace std;

typedef struct lnode_ lnode, *linklist;

void initlist_l(linklist &l) //建立單鏈表

void input(linklist &l, int n) //依次往單鏈表l裡輸入資料

}void output(linklist &l,int n) //依次輸出單鏈表裡的每個元素

}p = l->next;

for (i = 0; i < n; i++)

cout << 「排序後順序為:」;

for (i = 0; i < n; i++) cout << a[i] << " "; cout << endl;

}
linklist mergetlist(linklist &la, linklist &lb,linklist &lc)

else if(pa->data>pb->data)

else }

pc -> next = pa ? pa : pb;

delete lb;

return lc;

}void display(linklist l)

}int main()

{int num_a=5, num_b=5;

linklist la, lb, lc;

initlist_l(la); //la表的建立

input(la, num_a);

output(la,5 );

initlist_l(lb); //lb表的建立

input(lb, num_b); //依次往單鏈表la裡輸入資料

output(lb, 5);

initlist_l(lc);

mergetlist(la, lb, lc); //將單鏈表la和lb進行合併

display(lc);

system("pause");

return 0;

單鏈表 兩個有序鍊錶合併為乙個有序

1 new乙個新的鍊錶,定義結點用來遍歷兩個待排序的鍊錶 2 兩個待排序的鍊錶,哪個頭結點小,哪個作為新鍊錶的頭結點 3 對兩個鍊錶的結點進行比較,讓新鍊錶的next指向較小的結點,更新新鍊錶的尾巴,繼續比較直至某個鍊錶遍歷結束。4 遍歷結束,如果哪個鍊錶沒遍歷完,將剩下的幾點串在新鍊錶的後面,即當...

兩個有序鍊錶合併為有序

include 兩個有序遞增的單鏈表 有頭結點 合併為新單鏈表。include 用尾插法表示這兩個鍊錶較好,因為這樣建立鍊錶是有序的,遞增的。如果用頭插法,for迴圈改為for i n i 0,i 使其新建的鍊錶遞增 typedef struct lnode lnode lnode creat ln...

將兩個無序陣列合併為有序鍊錶

實現思想 把兩個無序的陣列首先排序,然後再按照鍊錶結構把它們分別構造好,然後再把兩個有序鍊錶合併。int const array1 size 5 陣列1的長度 int const array2 size 7 陣列2的長度 鍊錶結構體 typedef struct listnode listnode ...