用C语言写一个头插法单链表,并用详细的代码写清代码思路
时间: 2024-09-09 22:14:19 浏览: 65
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(0); // 内存分配失败,退出程序
}
newNode->data = data; // 赋值数据域
newNode->next = NULL; // 初始化指针域为NULL
return newNode;
}
// 头插法插入新节点
void headInsert(Node **head, int data) {
Node *newNode = createNode(data); // 创建新节点
newNode->next = *head; // 将新节点的next指向当前的头节点
*head = newNode; // 更新头指针为新节点
}
// 打印链表
void printList(Node *head) {
Node *current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
// 主函数
int main() {
Node *head = NULL; // 初始化头指针为NULL
// 使用头插法插入数据
headInsert(&head, 3);
headInsert(&head, 2);
headInsert(&head, 1);
// 打印链表
printList(head);
// 释放链表内存
Node *current = head;
Node *temp;
while (current != NULL) {
temp = current;
current = current->next;
free(temp);
}
return 0;
}
```
代码思路解释:
1. 定义了一个结构体`Node`,代表链表的节点,包含一个整型的数据域`data`和一个指向下一个节点的指针域`next`。
2. `createNode`函数用于创建一个新节点,分配内存,并初始化数据域和指针域。
3. `headInsert`函数实现了头插法逻辑,通过创建新节点,并将其`next`指针指向当前的头节点,然后更新头指针为新节点。
4. `printList`函数用于打印链表中的所有元素。
5. 在`main`函数中,演示了如何使用头插法创建链表,并打印出来。最后还包含了释放链表内存的代码,避免内存泄漏。
阅读全文