線性表的合併

2022-05-16 19:56:05 字數 845 閱讀 9873

1.有序:

順序表的合併:

typedef struct

sqlist;

/*la、lb均為遞增序列

*/void mergelist(sqlist la, sqlist lb, sqlist &lc)

while(pa <=pa_last)

while(pb <=pb_last)

}

view code

鍊錶的合併:

typedef struct

lnode

*linklist;

/*la和lb兩個公升序鍊錶最終合併成lc鍊錶(均帶頭節點)

*/void mergelist(linklist &la,linklist &lb,linklist &lc)

else

}pc->next = pa?pa:pb;//

根據pa的null與否判斷pc->next的值

free(lb);//

除lb的頭節點外其他節點都將串成lc鏈

}

view code

兩種方式時間複雜度均為o(n),但空間複雜度,前者由於需要重新分配空間存放lc,因而更大。

2.無序:

求無序線性表la和lb對應的集合a、b的並集aub

/*

la、lb為無序列表求,求兩表的並集

*/void unionl(list &la,list lb) }}

view code

該演算法時間複雜度為o(la_length * lb_length)。因為線性表無序,因而每從lb中取個元素出來,都需要用locateelem()在la中遍歷一次。

4 線性表的合併

1 2 include stdio.h 3 include stdlib.h 4 include malloc.h 56 define ok 1 7 define error 0 8 define true 1 9 define false 0 1011 define elemtype int 12...

線性表的順序儲存 及連個線性表的合併

題 兩個線性表的合併,若有相同元素選擇乙個就好 思路 先定義順序表的結構體 再定義結構體的物件 然後對物件進行吧增刪改查一系列的操作 對於合併,先從某個列表中選取元素,然後到另乙個列表中進行比較,如果在另乙個列表中不存在這個元素,則進行插入,否則不進行操作,把所有的元素都取出來到另一列表中去比較,採...

無序線性表合併(鍊錶)

分析 無序兩張表la,lb,需要遍歷lb查重再插入la尾 include include include include 包含exit標頭檔案 include include define ok 1 define error 0 define length a 5 define length b 3...