鍊錶的歸併

2021-10-24 13:54:35 字數 1540 閱讀 2283

//利用線性表中的鍊錶實現兩個鍊錶的歸併

//標頭檔案

#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 ...