資料結構例程 合併有序表

2021-09-23 17:43:39 字數 1515 閱讀 4857

本文針對資料結構基礎系列網路課程(2):線性表中第15課時有序表。

問題:有兩個有序表la和lb,將它們合併成乙個有序表lc。要求不破壞原有表la和lb

演算法思想:

解法1:用順序表實現(支援的演算法庫,及list.**件,鏈結…)

#include "list.h"

void

unionlist(sqlist *la,sqlist *lb,sqlist *&lc)

else //la->data[i]>lb->data[j]

}while (ilength) //la尚未掃瞄完,將其餘元素插入lc中

while (jlength) //lb尚未掃瞄完,將其餘元素插入lc中

lc->length=k;

}int main()

; elemtype b= ;

createlist(l1,a,3);

printf("l1:");

displist(l1);

createlist(l2,b,4);

printf("l2:");

displist(l2);

printf("歸併\n");

unionlist(l1,l2,l3);

printf("l3:");

displist(l3);

destroylist(l1);

destroylist(l2);

destroylist(l3);

}

解法2:用單鏈表實現(支援的演算法庫,及linklist.**件,鏈結…)

#include

#include

#include

"linklist.h"

void unionlist1(linklist *la,linklist *lb,linklist *&lc)

else

}while (pa!=

null)

while (pb!=

null)

pc->next=

null;

}int main()

; elemtype b

=; createlistr(l1,a,3);

printf("l1:");displist(l1);

createlistr(l2,b,4);

printf("l2:");displist(l2);

printf("歸併\n");

unionlist1(l1,l2,l3);

printf("l3:");displist(l3);

destroylist(l1);

destroylist(l2);

destroylist(l3);

return 0;

}

合併有序鍊錶

將兩個有序的鍊錶合併為乙個新鍊錶,要求新的鍊錶是通過拼接兩個鍊錶的節點來生成的,即不開闢新的記憶體空間 首先,為了方便操作鍊錶,我們定義乙個dummyhead,我們遍歷兩個鍊錶,直到其中有乙個到達尾部,則停下來 在遍歷的過程中,我們將元素值小的節點依次鏈在mergerlist的後邊,最後,我們看看哪...

合併有序鍊錶

題目描述將兩個有序的鍊錶合併為乙個新鍊錶,要求新的鍊錶是通過拼接兩個鍊錶的節點來生成的。塊 listnode mergetwolists listnode l1,listnode l2 if l2 null if l1 val l2 val else listnode pre target list...

合併有序鍊錶

21.合併兩個有序鍊錶 難度簡單912收藏分享切換為英文關注反饋 將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4class solution def mergetwolists self...