C言語で単方向連結リストを作成する手法は?
単方向リストを作成する方法はいくつかあり、以下はその一般的な方法の一つです。
- リストノードの構造体を定義してください。データの領域と次のノードを指すポインターの領域が含まれます。
struct Node {
int data;
struct Node* next;
};
- リンクドリストのヘッダノードを作成し、空を初期化します。
struct Node* head = NULL;
- 既存のノードに次々とノードを追加します。ヘッドとテールどちらからノードを追加するか選択します。
- 先頭にノードを追加する:
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); // 创建新节点
newNode->data = value; // 设置节点的数据域
newNode->next = head; // 将新节点的指针域指向当前头节点
head = newNode; // 更新头节点为新节点
- 末尾にノードを追加する:
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); // 创建新节点
newNode->data = value; // 设置节点的数据域
newNode->next = NULL; // 将新节点的指针域置为NULL
if (head == NULL) { // 如果链表为空,则将新节点设为头节点
head = newNode;
} else {
struct Node* temp = head;
while (temp->next != NULL) { // 找到最后一个节点
temp = temp->next;
}
temp->next = newNode; // 将新节点连接到最后一个节点
}
- ノードの挿入、削除などの操作でリンクリストを変更することもできます。
リンクリストを使用したら、メモリリークを防ぐため、メモリを解放することを忘れないでください。
struct Node* temp = head;
while (head != NULL) {
temp = head;
head = head->next;
free(temp);
}