用c++设计集合:存储有限的集合(简称有界集合类),数据不允许存储,会存满,实现集合的添加,判满,判空,是否存在,清空,排序,存储到文件,从文件读取。
时间: 2023-05-13 13:05:19 浏览: 97
C++程序设计,大家看看
好的,我可以回答这个问题。以下是一个用 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 init(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 *fp = fopen(filename, "w");
if (fp == NULL) {
printf("Error: cannot open file %s\n", filename);
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("Error: cannot open file %s\n", filename);
return;
}
clear(set);
int value;
while (fscanf(fp, "%d", &value) == 1) {
add(set, value);
}
fclose(fp);
}
int main() {
Set set;
init(&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;
}
```
这个代码示例实现了有界集合类的基本功能,包括添加元素、判满、判空、判断元素是否存在、清空集合、排序集合、存储到文件和从文件读取等。
阅读全文