c语言设计一个集合:存储有限的集合(简称有界集合类),数据不允许存储,会存满,实现集合的添加,判满,判空,是否存在,清空,排序,存储到文件,从文件读取。
时间: 2023-05-20 17:02:43 浏览: 89
非常感谢您的问题。以下是一个简单的C语言实现有界集合类的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int size;
} Set;
void initSet(Set *set) {
set->size = 0;
}
bool isFull(Set *set) {
return set->size == MAX_SIZE;
}
bool isEmpty(Set *set) {
return set->size == 0;
}
bool contains(Set *set, int value) {
for (int i = 0; i < set->size; i++) {
if (set->data[i] == value) {
return true;
}
}
return false;
}
bool add(Set *set, int value) {
if (isFull(set) || contains(set, value)) {
return false;
}
set->data[set->size++] = value;
return true;
}
void clear(Set *set) {
set->size = 0;
}
void sort(Set *set) {
for (int i = 0; i < set->size - 1; i++) {
for (int j = i + 1; j < set->size; j++) {
if (set->data[i] > set->data[j]) {
int temp = set->data[i];
set->data[i] = set->data[j];
set->data[j] = temp;
}
}
}
}
void saveToFile(Set *set, const char *filename) {
FILE *file = fopen(filename, "w");
if (file == NULL) {
printf("Failed to open file %s\n", filename);
return;
}
for (int i = 0; i < set->size; i++) {
fprintf(file, "%d\n", set->data[i]);
}
fclose(file);
}
void loadFromFile(Set *set, const char *filename) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("Failed to open file %s\n", filename);
return;
}
int value;
while (fscanf(file, "%d", &value) != EOF) {
add(set, value);
}
fclose(file);
}
int main() {
Set set;
initSet(&set);
add(&set, 3);
add(&set, 1);
add(&set, 2);
sort(&set);
saveToFile(&set, "set.txt");
clear(&set);
loadFromFile(&set, "set.txt");
for (int i = 0; i < set.size; i++) {
printf("%d ", set.data[i]);
}
printf("\n");
return 0;
}
```
这个代码实现了有界集合类的添加、判满、判空、是否存在、清空、排序、存储到文件和从文件读取等功能。您可以根据自己的需求进行修改和扩展。
阅读全文