C言語での連結リストの先頭にノードを追加する方法


以下に、連結リストの先頭にノードを追加するためのシンプルな方法とコード例を示します。

まず、以下のような構造体を定義します。

typedef struct Node {
    int data;
    struct Node* next;
} Node;

次に、連結リストの先頭にノードを追加する関数を実装します。

void addNodeAtBeginning(Node head, int newData) {
    // 新しいノードを作成し、データを設定する
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = newData;

    // 新しいノードの次のポインタを現在の先頭ノードに設定する
    newNode->next = *head;

    // 新しいノードをリストの先頭に設定する
    *head = newNode;
}

上記の関数では、新しいノードを作成し、データを設定します。そして、新しいノードの次のポインタを現在の先頭ノードに設定し、新しいノードをリストの先頭に設定します。

以下は、上記の関数を使用して連結リストにノードを追加する例です。

int main() {
    // 空の連結リストを作成する
    Node* head = NULL;

    // ノードを追加する
    addNodeAtBeginning(&head, 10);
    addNodeAtBeginning(&head, 20);
    addNodeAtBeginning(&head, 30);

    // リストの要素を表示する
    Node* currentNode = head;
    while (currentNode != NULL) {
        printf("%d ", currentNode->data);
        currentNode = currentNode->next;
    }

    return 0;
}

上記のコードでは、空の連結リストを作成し、addNodeAtBeginning関数を使用してノードを追加しています。最後に、リスト内の要素を表示しています。