在C语言中向链接列表添加节点

  • Post category:C

下面是在C语言中向链接列表添加节点的完整使用攻略:

1. 定义节点结构体

首先需要定义一个节点结构体,例如:

typedef struct Node {
    int data;           // 存储数据的字段
    struct Node *next;  // 存储下一个节点地址的指针
} Node;

2. 定义链表的头节点

链表的头节点是指整个链表的入口,可以通过它找到链表中的其他节点。定义链表的头节点代码如下:

Node *head = NULL;     // 头节点初始化为空

3. 添加新的节点

添加新节点的步骤如下:

3.1. 创建新节点

创建一个新的节点并分配内存:

Node *newNode = (Node*)malloc(sizeof(Node));

3.2. 给节点赋值

给节点的字段赋值,例如:

newNode->data = 123;
newNode->next = NULL;

3.3. 将新节点插入链表

将新节点插入链表中,可以采用以下两种方式:

3.3.1. 将新节点插入链表的头部

newNode->next = head;   // 新节点指向原头节点
head = newNode;         // 新节点成为新的头节点

3.3.2. 将新节点插入链表的尾部

if (head == NULL) {
    head = newNode;     // 如果链表为空,则新节点成为头节点
} else {
    Node *current = head;
    while (current->next != NULL) {
        current = current->next;
    }
    current->next = newNode;
}

以上代码将新节点插入到链表的最后位置。

示例说明

以下是两个示例说明:

示例1:向链表头部添加节点

Node *head = NULL;     // 定义链表头节点
for (int i = 0; i < 5; i++) {
    Node *newNode = (Node*)malloc(sizeof(Node));   // 分配新节点内存
    newNode->data = i;      // 给新节点赋值
    newNode->next = head;   // 新节点指向原头节点
    head = newNode;         // 新节点成为新的头节点
}

以上代码将5个节点分别添加到链表的头部。

示例2:向链表尾部添加节点

Node *head = NULL;     // 定义链表头节点
for (int i = 0; i < 5; i++) {
    Node *newNode = (Node*)malloc(sizeof(Node));   // 分配新节点内存
    newNode->data = i;      // 给新节点赋值
    newNode->next = NULL;   // 新节点的next指针初始化为NULL
    if (head == NULL) {
        head = newNode;     // 如果链表为空,则新节点成为头节点
    } else {
        Node *current = head;
        while (current->next != NULL) {
            current = current->next;
        }
        current->next = newNode;    // 将新节点插入到链表的最后位置
    }
}

以上代码将5个节点分别添加到链表的尾部。

最后,记得释放内存,否则会造成内存泄漏。