//利用線性表中的鍊錶實現兩個鍊錶的歸併
//標頭檔案
#pragma warning(disable: 4996)
#include #include //定義返回碼與常量
#define ok 1
#define true 1
#define error 0
#define overflow -1
//定義型別與結構
typedef int status;
typedef int elemtype;
typedef struct lnode lnode, * linklist;
//基本操作的實現
status initlist_l(linklist& l) //initlist_l;
status initlist_lc(linklist& l, int n)
return ok;
}//initlist_lc;
status printlist_l(linklist l)
printf("\n");
return ok;
}//printlist_l;
status creatlist_l(linklist& l, int n)
q->next = null;
return ok;
}//creatlist_l;
status judge_l(lnode *l)
} }if (n!= 0) return overflow;
//n為0,表示l是非遞減排序的,n為1,表示l不是非遞減排序的。
return ok;
}//judge_l;
status mergelist_l(linklist& la, linklist& lb, linklist& lc)
else
} pc->next = pa ? pa : pb;
free(lb); //釋放lb的位址
return ok;
}//mergelist_l;
//主函式
int main()
} printf("請輸入la中的元素(元素為整數),從小到大輸入:");
creatlist_l(la, n);
//鍊錶lb
printf("請輸入lb中的元素個數(個數為整數且範圍為:1~20):");
scanf("%d", &m);
if (m < 1 || m>20)
} printf("請輸入lb中的元素(元素為整數),從小到大輸入:");
creatlist_l(lb, m);
//鍊錶lc
initlist_lc(lc,m+n);
//la與lb是否為非遞減排序與歸併後的輸出
if (initlist_lc(lc, m + n) == ok)
return ok;
}
有序鍊錶的歸併
includeusing namespace std typedef struct lnode 定義單鏈表 lnode,linklist void initlist l linklist l 建立單鏈表 void input linklist l,int n 依次往單鏈表l裡輸入資料 void ou...
鍊錶排序 歸併
遞迴方法的歸併排序三部曲 1,快慢指標找中點 2,遞迴呼叫mergesort,3,合併兩個鍊錶。class solution listnode mergesort listnode node breakn next nullptr listnode l1 mergesort node listnod...
鍊錶的歸併排序
歸併排序,是一種效率較高的排序,和快速排序 希爾排序 堆排序等時間複雜度一樣為o nlog n 且它是一種穩定的排序。大體思想是先歸,把資料分組,比較之後再並。這種重複的分 和,十分適用遞迴的思想。例子,4,3,6,2,8,3,0 1.將4,3,6,2分為一組,8,3,0分為一組 2.繼續分4,3 ...