C言語で単方向リストを作成する完全なコード

以下是一个C语言编写的单链表完整代码示例:

#include <stdio.h>
#include <stdlib.h>

// 定义链表节点结构
struct Node {
    int data;
    struct Node* next;
};

// 在链表末尾插入新节点
void insertAtEnd(struct Node** head, int newData) {
    // 创建新节点
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = newData;
    newNode->next = NULL;

    // 如果链表为空,则将新节点作为头节点
    if (*head == NULL) {
        *head = newNode;
        return;
    }

    // 遍历链表直到最后一个节点
    struct Node* temp = *head;
    while (temp->next != NULL) {
        temp = temp->next;
    }

    // 在链表末尾插入新节点
    temp->next = newNode;
}

// 打印链表的元素
void printList(struct Node* node) {
    while (node != NULL) {
        printf("%d ", node->data);
        node = node->next;
    }
    printf("\n");
}

int main() {
    struct Node* head = NULL; // 初始化头节点

    // 在链表末尾插入元素
    insertAtEnd(&head, 1);
    insertAtEnd(&head, 2);
    insertAtEnd(&head, 3);
    insertAtEnd(&head, 4);
    insertAtEnd(&head, 5);

    // 打印链表元素
    printList(head);

    return 0;
}

このコードは、最初に、データフィールドdataと次のノードを指すポインタnextを持つノード構造体Nodeを定義しています。

その後、insertAtEnd関数を使用して新しいノードをリストの末尾に挿入します。この関数はまず、新しいノードを作成し、新しいノードのデータフィールドをnewDataに設定し、新しいノードのポインターフィールドnextをNULLに設定します。

リストが空の場合、新しいノードをヘッドノードとして追加します。そうでない場合、リストを最後のノードまで走査し、新しいノードを最後のノードのnextポインタに挿入します。

最後に、printList関数を使用してリストの要素を印刷します。この関数は、リストを走査して、各ノードのデータフィールドを順に印刷します。

bannerAds