用c++设计集合:存储有限的集合(简称有界集合类),数据不允许存储,会存满,实现集合的添加,判满,判空,是否存在,清空,排序,存储到文件,从文件读取。
时间: 2023-05-13 19:05:23 浏览: 59
好的,这是一个很好的问题。以下是一个简单的 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;
}
void add(Set *set, int value) {
if (isFull(set)) {
printf("Set is full\n");
return;
}
if (contains(set, value)) {
printf("Value already exists in set\n");
return;
}
set->data[set->size++] = value;
}
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 *fp = fopen(filename, "w");
if (fp == NULL) {
printf("Failed to open file\n");
return;
}
for (int i = 0; i < set->size; i++) {
fprintf(fp, "%d\n", set->data[i]);
}
fclose(fp);
}
void loadFromFile(Set *set, const char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file\n");
return;
}
int value;
while (fscanf(fp, "%d", &value) != EOF) {
add(set, value);
}
fclose(fp);
}
int main() {
Set set;
initSet(&set);
add(&set, 1);
add(&set, 2);
add(&set, 3);
add(&set, 4);
add(&set, 5);
add(&set, 6);
add(&set, 7);
add(&set, 8);
add(&set, 9);
add(&set, 10);
printf("Set contains 5: %s\n", contains(&set, 5) ? "true" : "false");
printf("Set contains 11: %s\n", contains(&set, 11) ? "true" : "false");
sort(&set);
saveToFile(&set, "set.txt");
clear(&set);
loadFromFile(&set, "set.txt");
printf("Set contains 5: %s\n", contains(&set, 5) ? "true" : "false");
printf("Set contains 11: %s\n", contains(&set, 11) ? "true" : "false");
return 0;
}
```
这个代码示例实现了有界集合类的基本功能,包括添加、判满、判空、是否存在、清空、排序、存储到文件和从文件读取。你可以根据自己的需求进行修改和扩展。
阅读全文