資料結構之鍊錶歸併排序

2021-07-10 08:04:57 字數 938 閱讀 4293

問題

設有兩個無頭結點的單鏈表,頭指標分別為ha,hb,鏈中有資料域data,鏈域next,兩鍊錶的資料都按遞增排序存放,現要求將hb表歸到ha表中,且歸併後ha仍遞增序,歸併中ha表中已有的資料若hb中也有,則hb中的資料不歸併到ha中,hb的鍊錶在演算法中不允許破壞。

源程式

#include #include#define n1 6 /*鍊錶la的長度*/ 

#define n2 6 /*鍊錶lb的長度*/

struct listnode

;void createlist(struct listnode * *,int);

void listinsert(struct listnode * *,struct listnode * *);

void readlist(struct listnode *);

int main()

void createlist(struct listnode * *p,int n)

q->next=null;

}void listinsert(struct listnode * *a,struct listnode * *b)

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

else

}if(!pa)

pre->next=null;

} *a=la->next;

free(la);

}void readlist(struct listnode *p)

printf("\n");

}

執行結果

資料結構之歸併排序

介紹 歸併排序是建立在歸併操作上的一種有效的排序演算法,效率為o nlogn 歸併排序的實現分為遞迴實現與非遞迴 迭代 實現。遞迴實現的歸併排序是演算法設計中分治策略的典型應用,我們將乙個大問題分割成小問題分別解決,然後用所有小問題的答案來解決整個大問題。非遞迴 迭代 實現的歸併排序首先進行是兩兩歸...

資料結構之歸併排序

編寫乙個歸併排序程式,並在main函式中驗證結果 歸併排序 merging sort 是利用 歸併 技術進行排序,所謂歸併 是指將若干個已排序好的子表合併成乙個有序表 最簡單的歸併是將兩個有序的子表合併成乙個有序表。假設r low 到r mid 和r mid 1 到r high 是儲存在同乙個陣列中...

資料結構之歸併排序

話說天下大勢,分久必合,合久必分.那就讓我一統江山,將其合併吧 哇咔咔咔,廢話不多說了,歸併排序的 來啦.歸併畢竟相較之前的排序都會更複雜些,所以加了備註.寫注釋也是能獲得碼市好好公民獎的吧 public class merge 以起始下標和最大下標為準求出中間數,採用遞迴方式將陣列不斷分成左右兩邊...