C++实现升序顺序表求并集
时间: 2023-05-30 18:02:08 浏览: 121
以下是升序顺序表求并集的 C 语言实现:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = 0;
}
void InputList(SqList *L) {
int n, i;
printf("请输入顺序表的长度:");
scanf("%d", &n);
printf("请输入顺序表的元素:");
for (i = 0; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void PrintList(SqList L) {
int i;
printf("顺序表的元素为:");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void MergeList(SqList La, SqList Lb, SqList *Lc) {
int i = 0, j = 0, k = 0;
while (i < La.length && j < Lb.length) {
if (La.data[i] < Lb.data[j]) {
Lc->data[k] = La.data[i];
i++;
k++;
} else if (La.data[i] > Lb.data[j]) {
Lc->data[k] = Lb.data[j];
j++;
k++;
} else {
Lc->data[k] = La.data[i];
i++;
j++;
k++;
}
}
while (i < La.length) {
Lc->data[k] = La.data[i];
i++;
k++;
}
while (j < Lb.length) {
Lc->data[k] = Lb.data[j];
j++;
k++;
}
Lc->length = k;
}
int main() {
SqList La, Lb, Lc;
InitList(&La);
InitList(&Lb);
InputList(&La);
InputList(&Lb);
MergeList(La, Lb, &Lc);
PrintList(Lc);
return 0;
}
```
该程序首先定义了一个顺序表结构体,包括一个整型数组和一个长度。然后定义了初始化顺序表、输入顺序表、输出顺序表、求并集的函数。在 `MergeList` 函数中,首先初始化三个下标 `i`、`j`、`k` 分别表示两个顺序表和结果顺序表的下标,然后比较两个顺序表中的元素大小,将较小的元素放入结果顺序表中,同时将对应下标加 1。如果两个元素相等,则同时放入结果顺序表中。最后,将剩余的元素放入结果顺序表中。最后输出结果顺序表。
阅读全文