c语言顺序表实现集合差集
时间: 2023-05-28 07:05:05 浏览: 163
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 最大元素个数
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 元素个数
} List;
// 初始化顺序表
void initList(List *L) {
L->length = 0;
}
// 向顺序表中插入元素
void insertList(List *L, int elem) {
if (L->length == MAXSIZE) {
printf("List is full.\n");
return;
}
L->data[L->length] = elem;
L->length++;
}
// 从顺序表中删除元素
void deleteList(List *L, int elem) {
int i, j;
for (i = 0; i < L->length; i++) {
if (L->data[i] == elem) {
for (j = i; j < L->length - 1; j++) {
L->data[j] = L->data[j + 1];
}
L->length--;
break;
}
}
}
// 求集合差集
void setDifference(List *A, List *B, List *C) {
int i, j;
initList(C); // 初始化差集
for (i = 0; i < A->length; i++) {
for (j = 0; j < B->length; j++) {
if (A->data[i] == B->data[j]) {
break; // 如果A中的元素在B中出现过,就不加入差集C中
}
}
if (j == B->length) {
insertList(C, A->data[i]); // 如果A中的元素不在B中出现过,就加入差集C中
}
}
}
int main() {
List A, B, C;
int i;
initList(&A);
initList(&B);
insertList(&A, 1);
insertList(&A, 2);
insertList(&A, 3);
insertList(&B, 2);
insertList(&B, 3);
insertList(&B, 4);
setDifference(&A, &B, &C);
printf("A = {");
for (i = 0; i < A.length; i++) {
printf("%d", A.data[i]);
if (i < A.length - 1) {
printf(",");
}
}
printf("}\n");
printf("B = {");
for (i = 0; i < B.length; i++) {
printf("%d", B.data[i]);
if (i < B.length - 1) {
printf(",");
}
}
printf("}\n");
printf("C = {");
for (i = 0; i < C.length; i++) {
printf("%d", C.data[i]);
if (i < C.length - 1) {
printf(",");
}
}
printf("}\n");
return 0;
}
阅读全文