鏈式儲存歸並無需移動元素,僅需修改指標指向,避免了順序表歸並時大量元素後移的開銷,時間複雜度仍為 O(m+n) 但常數因子極小。

void MergeList(LinkList &La, LinkList &Lb, LinkList &Lc) {
LinkList pa = La->next, pb = Lb->next, pc;
Lc = pc = La; // 利用 La 的頭節點作為 Lc 頭節點
while (pa && pb) {
if (pa->data <= pb->data) {
pc->next = pa; pc = pa; pa = pa->next;
} else {
pc->next = pb; pc = pb; pb = pb->next;
}
}
pc->next = pa ? pa : pb; // 鏈接剩餘段
free(Lb); // 釋放 Lb 頭節點
}
TestData_HL.txt:頭插法建表資料TestData_TL.txt:尾插法建表資料
MergeList.h/c:歸並演算法MergeList-main.c:主程式本範例完整呈現鏈式歸並的指標操作細節,是掌握鏈表指標操作的經典練習。