(1) 使用顺序表类模板SqList设计求两个顺序表存储的集合差集的算法;
时间: 2023-05-17 14:05:48 浏览: 93
可以使用以下算法来求两个顺序表存储的集合差集:
1. 首先将两个顺序表分别按照从小到大的顺序排序。
2. 定义两个指针分别指向两个顺序表的第一个元素。
3. 从两个顺序表的第一个元素开始比较,如果两个元素相等,则将两个指针同时向后移动一位;如果第一个元素小于第二个元素,则将第一个指针向后移动一位;如果第一个元素大于第二个元素,则将第二个指针向后移动一位。
4. 重复步骤3,直到其中一个指针到达顺序表的末尾。
5. 将剩余的元素加入到结果集合中。
以下是使用顺序表类模板SqList实现的代码:
template <typename T>
SqList<T> difference(SqList<T> &list1, SqList<T> &list2) {
SqList<T> result;
int i = 0, j = 0;
while (i < list1.length() && j < list2.length()) {
if (list1[i] == list2[j]) {
i++;
j++;
} else if (list1[i] < list2[j]) {
result.append(list1[i]);
i++;
} else {
j++;
}
}
while (i < list1.length()) {
result.append(list1[i]);
i++;
}
return result;
}