线性表的合并和有序表的合并
线性表的合并
- 问题描述:
假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合A = A∪B
La = (7, 5, 3, 11) Lb = (2, 6, 3) ➡ La = (7, 5, 3, 11, 2, 6)
- 算法步骤:
依次取出Lb中的每个元素,执行以下操作:
- 在La中查找该元素
- 如果找不到,则将其插入La的最后
void union(List &La, List Lb){
La_len = ListLength(La); //求La的长度
La_len = ListLength(Lb); //求Lb的长度
for(i = 1; i <= Lb_len; i++){ //依次取出Lb中的元素
GetElem(Lb, i, e);
if(!LocateElem(La, e)) //如果元素e不存在La中
ListInsert(&La, La_len++, e); //则将其插入La的最后
}
}
//算法的时间复杂度是:O(ListLength(La) * ListLength(Lb))
有序表的合并
用顺序表实现有序表的合并
- 已知线性表La和Lb中的数据元素按值非递减有序排列,现要求将La和Lb归并为一个新的线性表Lc,且Lc中的数据元素仍按值非递减有序排列:
La =(1, 7, 8) Lb = (