C语言写一个函数insert,用来向一个动态链表插入结点(完整代码)
时间: 2024-10-15 13:23:25 浏览: 31
C语言实现带头结点的链表的创建、查找、插入、删除操作
在C语言中,我们可以创建一个函数`insert`来插入一个新节点到一个动态链表中。首先,我们需要包含头文件`stdio.h`、`stdlib.h`以及定义链表结构体`Node`。假设我们的链表节点有数据域`data`和指向下个节点的指针`next`。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data; // 节点的数据
struct Node* next; // 指向下一个节点的指针
} Node;
// 动态链表函数
void insert(Node** head, int data) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 分配内存给新节点
if (!newNode) { // 如果内存分配失败
printf("Memory allocation failed.\n");
return;
}
newNode->data = data; // 设置新节点的数据
newNode->next = *head; // 新节点指向当前链表头
*head = newNode; // 将新节点设置为链表的新头
}
int main() {
Node* head = NULL; // 初始化链表为空
// 插入示例
insert(&head, 1);
insert(&head, 2);
insert(&head, 3);
// 打印链表
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
return 0;
}
```
这个`insert`函数接收一个指向指针的指针`head`,表示链表的头部,以及一个整数`data`作为要插入的数据。注意,在主函数中,我们使用`&head`来传递链表头的地址,因为我们需要修改的是实际的链表头。
阅读全文