c语言自己定义集合并调用
时间: 2024-09-06 14:01:36 浏览: 13
在C语言中,集合通常不是内置的数据结构,你可以通过自定义数据结构来模拟集合的行为。一种常见的做法是使用数组或者链表来存储元素,并使用函数来实现类似添加、删除和查找等操作。这里简单地演示如何使用数组实现一个简单的"集合":
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int capacity; // 集合的最大容量
int* elements; // 存储元素的数组
int size; // 当前集合元素的数量
} MySet;
// 初始化集合
MySet* myset_create(int capacity) {
MySet* set = (MySet*)malloc(sizeof(MySet));
set->capacity = capacity;
set->elements = malloc(capacity * sizeof(int));
set->size = 0;
return set;
}
// 添加元素
void myset_add(MySet* set, int value) {
if (set->size == set->capacity) {
// 扩展集合容量
set->capacity *= 2;
set->elements = realloc(set->elements, set->capacity * sizeof(int));
}
set->elements[set->size++] = value;
}
// 查找元素
int myset_find(const MySet* set, int value) {
for (int i = 0; i < set->size; i++) {
if (set->elements[i] == value) {
return 1; // 成功找到,返回1
}
}
return 0; // 没有找到,返回0
}
// 删除元素(这里仅示例,实际应用可能需要额外逻辑)
void myset_remove(MySet* set, int value) {
for (int i = 0; i < set->size - 1; i++) {
if (set->elements[i] == value) {
memmove(set->elements + i, set->elements + i + 1, (set->size - i - 1) * sizeof(int));
set->size--;
break;
}
}
}
// 示例
int main() {
MySet* s = myset_create(5);
myset_add(s, 1);
myset_add(s, 2);
printf("%d found in the set?\n", 2, myset_find(s, 2)); // 输出: 1 found in the set?
free(s);
return 0;
}