-
配列を使用する方法:
#include <stdio.h> #define MAX_SIZE 100 typedef struct { int elements[MAX_SIZE]; int size; } Set; void insertElement(Set *set, int element) { if (set->size == MAX_SIZE) { printf("Set is full. Cannot insert element.\n"); return; } // 重複要素のチェック for (int i = 0; i < set->size; i++) { if (set->elements[i] == element) { printf("Element already exists in the set.\n"); return; } } set->elements[set->size] = element; set->size++; } int main() { Set set = { {0}, 0 }; insertElement(&set, 10); insertElement(&set, 20); insertElement(&set, 30); insertElement(&set, 20); // 重複要素を挿入 // 挿入後の集合の要素を表示 printf("Set elements: "); for (int i = 0; i < set.size; i++) { printf("%d ", set.elements[i]); } printf("\n"); return 0; }
-
リンクドリストを使用する方法:
#include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node *next; } Node; typedef struct { Node *head; } Set; void insertElement(Set *set, int element) { // 重複要素のチェック Node *current = set->head; while (current != NULL) { if (current->data == element) { printf("Element already exists in the set.\n"); return; } current = current->next; } // 新しいノードを作成して挿入 Node *newNode = (Node *)malloc(sizeof(Node)); newNode->data = element; newNode->next = set->head; set->head = newNode; } int main() { Set set = { NULL }; insertElement(&set, 10); insertElement(&set, 20); insertElement(&set, 30); insertElement(&set, 20); // 重複要素を挿入 // 挿入後の集合の要素を表示 printf("Set elements: "); Node *current = set.head; while (current != NULL) { printf("%d ", current->data); current = current->next; } printf("\n"); return 0; }
これらのコード例は、C言語で集合に要素を挿入する方法を示しています。配列を使用する方法では、配列のサイズ制限や重複要素のチェックを行います。リンクドリストを使用する方法では、動的なメモリ割り当てを行い、重複要素をチェックします。