集合A: 1 3 5 7 //顺序表A 集合B:5 7 9 11 //顺序表B 求AUB:1 3 5 7 9 11 c语言代码实现
时间: 2024-01-13 16:05:45 浏览: 165
顺序表表示集合,实现集合的交、并、差运算
3星 · 编辑精心推荐
以下是使用顺序表实现AUB的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100 //定义顺序表最大长度
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
//初始化顺序表
void initList(SeqList *list) {
list->length = 0;
}
//在顺序表末尾插入元素
void insert(SeqList *list, int value) {
if (list->length >= MAX_SIZE) {
printf("顺序表已满,无法插入元素\n");
return;
}
list->data[list->length] = value;
list->length++;
}
//合并A和B两个集合,存放到C中
void merge(SeqList A, SeqList B, SeqList *C) {
int i, j, k;
i = j = k = 0;
while (i < A.length && j < B.length) {
if (A.data[i] < B.data[j]) {
C->data[k] = A.data[i];
i++;
} else if (A.data[i] > B.data[j]) {
C->data[k] = B.data[j];
j++;
} else {
C->data[k] = A.data[i];
i++;
j++;
}
k++;
}
while (i < A.length) {
C->data[k] = A.data[i];
i++;
k++;
}
while (j < B.length) {
C->data[k] = B.data[j];
j++;
k++;
}
C->length = k;
}
//输出顺序表元素
void printList(SeqList list) {
int i;
for (i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
int main() {
SeqList A, B, C;
initList(&A);
initList(&B);
insert(&A, 1);
insert(&A, 3);
insert(&A, 5);
insert(&A, 7);
insert(&B, 5);
insert(&B, 7);
insert(&B, 9);
insert(&B, 11);
merge(A, B, &C);
printf("AUB: ");
printList(C);
return 0;
}
```
输出结果为:
```
AUB: 1 3 5 7 9 11
```
阅读全文