用C语言编写一个最简单的单链表示例代码,强调代码易读性,并用最详细的注释说明代码思路
时间: 2024-09-09 12:13:22 浏览: 42
用C语言实现数据结构中的单链表代码!!!
以下是一个使用C语言编写的简单单链表的示例代码,其中包含了详细的注释来解释代码的思路,以便于理解和维护:
```c
#include <stdio.h> // 引入标准输入输出头文件
#include <stdlib.h> // 引入标准库头文件,用于使用malloc()和free()
// 定义单链表节点的结构体
typedef struct Node {
int data; // 节点存储的数据
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建一个新的链表节点
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 动态分配内存给新节点
if (newNode == NULL) { // 检查内存分配是否成功
printf("内存分配失败\n");
exit(1); // 如果内存分配失败,则退出程序
}
newNode->data = data; // 将新节点的数据设置为传入的数据
newNode->next = NULL; // 新节点的下一个节点指针设置为NULL
return newNode; // 返回新创建的节点指针
}
// 将新节点插入到链表的头部
void insertAtHead(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("NULL\n"); // 打印链表结束标记
}
// 清理链表,释放分配的内存
void freeList(Node* head) {
Node* current = head; // 从头节点开始
while (current != NULL) { // 遍历链表直到尾部
Node* nextNode = current->next; // 保存下一个节点的指针
free(current); // 释放当前节点的内存
current = nextNode; // 移动到下一个节点
}
}
int main() {
Node* head = NULL; // 初始化链表头指针为NULL
// 向链表中插入数据
insertAtHead(&head, 3);
insertAtHead(&head, 2);
insertAtHead(&head, 1);
// 打印链表
printf("链表中的元素为: ");
printList(head);
// 释放链表内存
freeList(head);
return 0;
}
```
这段代码定义了一个单链表的基本操作,包括创建节点、在头部插入节点、打印链表以及释放链表内存。每个函数都有注释说明其功能和工作方式,以增强代码的可读性。
阅读全文