/* 头插法建立单链表:返回单链表的头指针 */ struct Node* buildLinkedList(int* arr, int n); /* 头插法建立单链表 */ void printLinkedList(struct Node* head); /* 打印链表 */
时间: 2025-05-26 15:31:50 浏览: 21
### 头插法建立单链表的实现方法
在C语言中,头插法是一种常见的构建单链表的方法。通过这种方法,每次新增的节点都会被放置到链表的第一个位置上,从而使得最终形成的链表顺序与输入数据的顺序相反。
#### 节点结构体定义
为了便于操作和管理链表中的各个节点,通常会先定义一个节点结构体 `Node`。该结构体包含两个部分:一个是用于存储实际数据的数据域;另一个是指向下一个节点的指针域[^1]。
```c
typedef struct Node {
int data; // 数据域,用来保存节点的实际数值
struct Node* next; // 指针域,指向下一个节点的位置
} Node;
```
#### 创建链表函数
下面是一个完整的创建链表并采用头插法插入节点的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 函数声明
void insertAtHead(Node** head, int value);
void printList(Node* head);
int main() {
Node* head = NULL; // 初始化空链表
// 使用头插法依次插入几个整数
insertAtHead(&head, 5);
insertAtHead(&head, 4);
insertAtHead(&head, 3);
insertAtHead(&head, 2);
insertAtHead(&head, 1);
// 打印整个链表的内容
printList(head);
return 0;
}
// 插入新节点至头部
void insertAtHead(Node** head, int value) {
// 动态分配内存空间给新节点
Node* newNode = (Node*) malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed\n");
exit(EXIT_FAILURE);
}
newNode->data = value; // 设置新节点的数据值
newNode->next = *head; // 新节点的下一节点设置为当前头节点
*head = newNode; // 更新头指针指向新的头节点
}
// 遍历并打印链表内容
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data); // 输出当前节点的数据
temp = temp->next; // 移动到下一个节点
}
printf("NULL\n"); // 表明到达链表末端
}
```
上述程序展示了如何使用头插法逐步构建起一条由多个节点组成的单链表,并提供了相应的打印功能以便验证其正确性[^3]。
### 打印链表的过程说明
当需要显示已建成的单链表时,可以通过编写专门的遍历算法来完成这一任务。此过程中从链表首端出发逐一遍访每一个节点直到遇到终止标志(即null),期间每访问到一个新的节点就将其所含有的信息提取出来加以呈现[^5]。
相关问题
阅读全文
相关推荐


















