两个顺序表集合的差集的代码,用c语言编写
时间: 2023-03-20 11:00:55 浏览: 101
下面是用 C 语言编写的两个顺序表集合的差集代码:
```c
#include <stdio.h>
#define MAXSIZE 100 // 顺序表最大长度
// 定义顺序表结构体
typedef struct {
int data[MAXSIZE]; // 存放元素的数组
int length; // 顺序表当前长度
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 在顺序表尾部插入元素
void ListInsert(SqList *L, int elem) {
if (L->length == MAXSIZE) {
printf("Error: List is full!\n");
return;
}
L->data[L->length] = elem;
L->length++;
}
// 判断元素是否在顺序表中
int IsElemInList(SqList L, int elem) {
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == elem) {
return 1; // 找到元素,返回 1
}
}
return 0; // 未找到元素,返回 0
}
// 顺序表差集运算
void ListDifference(SqList A, SqList B, SqList *C) {
int i;
InitList(C); // 初始化差集 C
for (i = 0; i < A.length; i++) {
if (!IsElemInList(B, A.data[i])) {
ListInsert(C, A.data[i]); // A 中的元素不在 B 中,插入到 C 中
}
}
}
// 测试代码
int main() {
SqList A, B, C;
int i;
// 初始化 A
InitList(&A);
ListInsert(&A, 1);
ListInsert(&A, 2);
ListInsert(&A, 3);
// 初始化 B
InitList(&B);
ListInsert(&B, 2);
ListInsert(&B, 3);
ListInsert(&B, 4);
// 求差集 C
ListDifference(A, B, &C);
// 输出差集 C
for (i = 0; i < C.length; i++) {
printf("%d ", C.data[i]);
}
printf("\n");
return 0;
}
```
这个代码实现了顺序表的差集运算,其中 IsElemInList 函数用于判断元素是否在顺序表中,ListDifference 函数用于求两个顺序表的差集,最后通过测试代码对其进行验证。