c语言链表的尾插法代码
时间: 2024-09-09 19:08:30 浏览: 20
链表的尾插法是指在链表的末尾插入一个新的节点。在C语言中,实现链表的尾插法通常需要维护一个指向链表最后一个节点的指针,这样可以方便地将新节点添加到链表的末尾。以下是使用C语言实现的链表尾插法的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建一个新节点
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
exit(-1); // 内存分配失败,退出程序
}
newNode->data = data; // 设置节点数据
newNode->next = NULL; // 新节点的next指针设为NULL
return newNode;
}
// 尾插法插入节点
void insertNodeAtTail(Node** head, int data) {
Node* newNode = createNode(data); // 创建新节点
// 如果链表为空,新节点即为头节点
if (*head == NULL) {
*head = newNode;
return;
}
// 否则,找到链表的最后一个节点
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
// 将最后一个节点的next指针指向新节点
temp->next = newNode;
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
Node* head = NULL; // 初始化链表头指针为空
// 使用尾插法插入节点
insertNodeAtTail(&head, 1);
insertNodeAtTail(&head, 2);
insertNodeAtTail(&head, 3);
// 打印链表
printList(head);
// 释放链表内存(略)
return 0;
}
```
在这段代码中,首先定义了链表节点的结构体`Node`,然后定义了一个创建新节点的函数`createNode`,以及实现尾插法的函数`insertNodeAtTail`。在`insertNodeAtTail`函数中,首先创建一个新的节点,然后判断链表是否为空,如果为空则直接将新节点设置为头节点,否则遍历链表找到最后一个节点,并将其`next`指针指向新创建的节点。最后,在`main`函数中演示了如何使用尾插法插入节点并打印链表。