シングルリンクリストにノードを追加する方法


  1. 新しいノードを作成します。これには、データ要素を格納する変数と、次のノードへのポインタを格納する変数が必要です。
struct Node {
    int data;
    struct Node* next;
};
  1. 与えられたノードの次のノードへのポインタを新しいノードに割り当てます。
void addNodeAfter(struct Node* prevNode, int newData) {
    if (prevNode == NULL) {
        printf("与えられたノードが存在しません。\n");
        return;
    }
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = newData;
    newNode->next = prevNode->next;
    prevNode->next = newNode;
}
  1. ノードを追加した後、リスト内の要素を適切に更新します。

以下は、上記の手順を使用してノードを追加する例です。

int main() {
    struct Node* head = NULL;
    struct Node* second = NULL;
    struct Node* third = NULL;
    // ノードを作成します
    head = (struct Node*)malloc(sizeof(struct Node));
    second = (struct Node*)malloc(sizeof(struct Node));
    third = (struct Node*)malloc(sizeof(struct Node));
    // 各ノードのデータを設定します
    head->data = 1;
    second->data = 2;
    third->data = 3;
    // リストをリンクします
    head->next = second;
    second->next = third;
    third->next = NULL;
    // ノードを追加します
    addNodeAfter(second, 4);
    // リストの要素を表示します
    struct Node* current = head;
    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }
    return 0;
}

上記のコードでは、与えられたノードの次に新しいノードが追加され、リストの要素が「1 2 4 3」と表示されます。

この記事では、シングルリンクリストにノードを追加する方法を説明しました。C言語のポインタとメモリの動的割り当ての概念を活用して、シンプルで効率的なコードを提供しました。この方法を使えば、他のプログラムでもシングルリンクリストにノードを追加することができます。