問題
設有兩個無頭結點的單鏈表,頭指標分別為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 以起始下標和最大下標為準求出中間數,採用遞迴方式將陣列不斷分成左右兩邊...