連結リスト
連結リストの仕組みと、挿入・削除などの操作の実装方法を学びます
「連結リスト」はCoddyKit上の無料C Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全3レッスンが含まれています。
Cの連結リスト
Cの連結リスト
連結リストは、要素(ノード)をポインターでつないだ動的なデータ構造です。
このレッスンでは、次のことを学びます。
- 連結リストの仕組み。
- 連結リストへのノードの挿入と削除。
- 配列に対する連結リストの利点。

例:連結リストのノードの定義
例:連結リストのノードの定義
Cでは、データフィールドと次のノードへのポインターを持つstructを使用して、連結リストのノードを定義します。
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
int main() {
struct Node *head = NULL;
return 0;
}先頭へのノードの挿入
先頭へのノードの挿入
連結リストの先頭に新しいノードを挿入するには、次の手順を実行します。
- 新しいノードを作成します。
- その
nextポインターを現在の先頭に設定します。 - 先頭ポインターを更新します。
例:先頭へのノードの挿入
例:先頭へのノードの挿入
このプログラムでは、連結リストの先頭に新しいノードを挿入します。
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
void insertAtBeginning(struct Node **head, int newData) {
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = newData;
newNode->next = *head;
*head = newNode;
}
int main() {
struct Node *head = NULL;
insertAtBeginning(&head, 10);
printf("Inserted: %d\n", head->data);
return 0;
}ノードの削除
ノードの削除
連結リストからノードを削除するには、次の手順を実行します。
- 削除するノードを見つけます。
- 前のノードの
nextポインターを更新します。 - 削除したノードのメモリを解放します。
例:ノードの削除
例:ノードの削除
このプログラムでは、連結リストからノードを削除します。
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
void deleteNode(struct Node **head, int key) {
struct Node *temp = *head, *prev;
if (temp != NULL && temp->data == key) {
*head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return;
prev->next = temp->next;
free(temp);
}
int main() {
struct Node *head = (struct Node*)malloc(sizeof(struct Node));
head->data = 10;
head->next = NULL;
deleteNode(&head, 10);
return 0;
}連結リストの利点
連結リストの利点
連結リストには、配列に対して次のような利点があります。
- サイズが動的です(あらかじめサイズを指定する必要がありません)。
- 要素の挿入と削除を効率的に行えます。
- 固定サイズによるメモリの無駄がありません。
まとめ
まとめ
このレッスンでは、次のことを学びました。
- 連結リストとは何か、またどのように動作するか。
- ノードを挿入および削除する方法。
- 配列に対する連結リストの利点。
次は、Cのスタックとキューについて見ていきます。

よくある質問
「連結リスト」レッスンは無料ですか?
はい。「連結リスト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全3レッスンが含まれています。
「連結リスト」で何を学びますか?
連結リストの仕組みと、挿入・削除などの操作の実装方法を学びます ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「連結リスト」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC Academyレッスンでコードを書いて実行できますか?
はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。