1.有序:
順序表的合併:
typedef structview codesqlist;
/*la、lb均為遞增序列
*/void mergelist(sqlist la, sqlist lb, sqlist &lc)
while(pa <=pa_last)
while(pb <=pb_last)
}
鍊錶的合併:
typedef structview codelnode
*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鏈
}
兩種方式時間複雜度均為o(n),但空間複雜度,前者由於需要重新分配空間存放lc,因而更大。
2.無序:
求無序線性表la和lb對應的集合a、b的並集aub
/*view codela、lb為無序列表求,求兩表的並集
*/void unionl(list &la,list lb) }}
該演算法時間複雜度為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...