C语言集合如何实现

   2024-10-06 8920
核心提示:C语言中可以使用数组、结构体、指针等数据结构来实现集合。使用数组:可以使用数组来存储集合中的元素,然后通过遍历数组来实现

C语言中可以使用数组、结构体、指针等数据结构来实现集合。

使用数组:可以使用数组来存储集合中的元素,然后通过遍历数组来实现集合的操作,如查找、添加、删除元素等操作。
#define MAX_SIZE 100int set[MAX_SIZE];int size = 0;void addElement(int element) {    set[size++] = element;}int contains(int element) {    for (int i = 0; i < size; i++) {        if (set[i] == element) {            return 1;        }    }    return 0;}void removeElement(int element) {    for (int i = 0; i < size; i++) {        if (set[i] == element) {            for (int j = i; j < size - 1; j++) {                set[j] = set[j + 1];            }            size--;            break;        }    }}
使用结构体:可以定义一个结构体来表示集合,结构体中包含一个数组和集合的大小,然后通过结构体成员来操作集合。
#define MAX_SIZE 100typedef struct {    int elements[MAX_SIZE];    int size;} Set;void addElement(Set *set, int element) {    set->elements[set->size++] = element;}int contains(Set *set, int element) {    for (int i = 0; i < set->size; i++) {        if (set->elements[i] == element) {            return 1;        }    }    return 0;}void removeElement(Set *set, int element) {    for (int i = 0; i < set->size; i++) {        if (set->elements[i] == element) {            for (int j = i; j < set->size - 1; j++) {                set->elements[j] = set->elements[j + 1];            }            set->size--;            break;        }    }}
使用指针:可以使用指针来管理集合,通过动态分配内存来存储集合中的元素。
typedef struct {    int *elements;    int size;} Set;Set* createSet() {    Set *set = (Set*)malloc(sizeof(Set));    set->elements = (int*)malloc(sizeof(int) * MAX_SIZE);    set->size = 0;    return set;}void addElement(Set *set, int element) {    set->elements[set->size++] = element;}int contains(Set *set, int element) {    for (int i = 0; i < set->size; i++) {        if (set->elements[i] == element) {            return 1;        }    }    return 0;}void removeElement(Set *set, int element) {    for (int i = 0; i < set->size; i++) {        if (set->elements[i] == element) {            for (int j = i; j < set->size - 1; j++) {                set->elements[j] = set->elements[j + 1];            }            set->size--;            break;        }    }}void freeSet(Set *set) {    free(set->elements);    free(set);}

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号