C言語で集合に要素を挿入する方法


  1. 配列を使用する方法:

    #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;
    }
  2. リンクドリストを使用する方法:

    #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言語で集合に要素を挿入する方法を示しています。配列を使用する方法では、配列のサイズ制限や重複要素のチェックを行います。リンクドリストを使用する方法では、動的なメモリ割り当てを行い、重複要素をチェックします。