- 新しいノードを作成します。これには、データ要素を格納する変数と、次のノードへのポインタを格納する変数が必要です。
struct Node {
int data;
struct Node* next;
};
- 与えられたノードの次のノードへのポインタを新しいノードに割り当てます。
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;
}
- ノードを追加した後、リスト内の要素を適切に更新します。
以下は、上記の手順を使用してノードを追加する例です。
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言語のポインタとメモリの動的割り当ての概念を活用して、シンプルで効率的なコードを提供しました。この方法を使えば、他のプログラムでもシングルリンクリストにノードを追加することができます。