C语言单链表头插法创建链表 - 使用函数实现
C语言单链表头插法创建链表 - 使用函数实现
本文将详细讲解使用 C 语言单链表头插法创建链表,并提供完整的代码示例,其中包含使用函数实现链表的创建和打印功能。
代码示例
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域
} Node;
// 创建链表函数
Node* createLinkedList(int n) {
Node* head = NULL; // 头节点指针
Node* p = NULL; // 当前节点指针
// 依次创建n个节点
for (int i = 0; i < n; i++) {
int data;
printf("请输入第%d个节点的值:", i + 1);
scanf("%d", &data);
// 创建新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
// 将新节点插入到链表头部
if (head == NULL) {
head = newNode;
} else {
newNode->next = head;
head = newNode;
}
}
return head;
}
// 打印链表函数
void printLinkedList(Node* head) {
Node* p = head; // 当前节点指针
printf("链表内容为:");
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
int n;
printf("请输入链表的节点个数:");
scanf("%d", &n);
// 创建链表
Node* head = createLinkedList(n);
// 打印链表
printLinkedList(head);
return 0;
}
代码解析
-
定义链表节点结构体
Nodedata: 数据域,用于存储节点的数据。next: 指针域,指向下一个节点。
-
创建链表函数
createLinkedList- 初始化头节点指针
head为NULL,表示空链表。 - 使用循环依次创建
n个节点。 - 每个节点都分配内存,并将数据域
data设置为用户输入的值。 - 使用头插法将新节点插入到链表头部:
- 如果链表为空,则将新节点设置为头节点。
- 否则,将新节点的
next指针指向当前头节点,并将头节点指针指向新节点。
- 最后返回头节点指针
head。
- 初始化头节点指针
-
打印链表函数
printLinkedList- 初始化当前节点指针
p为头节点指针head。 - 使用循环遍历链表,输出每个节点的数据域
data。
- 初始化当前节点指针
-
主函数
main- 获取用户输入的链表节点个数
n。 - 调用
createLinkedList函数创建链表,并将返回值赋值给head指针。 - 调用
printLinkedList函数打印链表的内容。
- 获取用户输入的链表节点个数
总结
本文介绍了使用 C 语言单链表头插法创建链表的方法,并提供了完整代码示例和解析。通过理解代码中的关键部分,我们可以轻松地掌握单链表头插法的实现原理。
原文地址: https://www.cveoy.top/t/topic/pfLF 著作权归作者所有。请勿转载和采集!