測試:#include using namespace std;
// 函式結果狀態**
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
#define maxsize 100
// status 是函式的型別 其值是函式結果狀態**
typedef int status;
typedef int elemtype;
typedef struct listnodelistnode, *linklist;
// 單鏈表的初始化
status initlist_l(linklist &l)
// 尾插法:正序輸入n個元素值,建立帶頭結點的單鏈表 演算法複雜度o(n)
void creatlist_r(linklist &l, int n)
}// 遍歷鍊錶
status printlist(linklist l)
cout << endl;
return ok;
}// 有序表合併--用鍊錶實現 時間複雜度o( listlength(la)+listlength(lb) )
void mergelist_l(linklist &la, linklist &lb, linklist &lc) else
}pc->next = pa ? pa : pb; // 插入剩餘段
delete lb;
}// 頭插法測試**
int main()
感謝青島大學-王卓老師細心的講解~!尾插法[3]:1 7 8
尾插法[6]:2 4 6 8 10 11
la: 1 7 8
lb: 2 4 6 8 10 11
有序表合併lc: 1 2 4 6 7 8 8 10 11
有序鍊錶合併
歸併排序 la lb是兩個帶頭結點的有序鍊錶,歸併兩個鍊錶得到新的有序表lc。設立指標pa,pb,pc,其中pa和pb分別指向la,lb中當前待比較的結點,pc指向lc表中當前最後乙個結點。將pa,pb結點中值較小的乙個鏈結到pc之後。typedef struct node node,plink 銷...
實現2個有序鍊錶的合併
原題 本題要求實現乙個函式,將兩個鍊錶表示的遞增整數序列合併為乙個非遞減的整數序列。函式介面定義 list merge list l1,list l2 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode l...
鍊錶 合併有序鍊錶
題目 將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 題解我們這裡利用到了乙個前哨節點,因為兩個鍊錶實際上是已經排好序了,所以我們只需要比較兩個節點誰大誰小,找到小的接上去,然後那個...