C语言 手写单链表 实现增删改查功能

发布时间:2025-04-28      访问量:24
单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。下面是一个简单的 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) { printf("内存分配失败\n"); exit(1); } newNode->data = data; newNode->next = NULL; return newNode; } // 在链表尾部插入节点 void insertNode(Node** head, int data) { Node* newNode = createNode(data); if (*head == NULL) { *head = newNode; return; } Node* temp = *head; while (temp->next != NULL) { temp = temp->next; } temp->next = newNode; } // 删除指定值的节点 void deleteNode(Node** head, int key) { Node* temp = *head; Node* prev; if (temp != NULL && temp->data == key) { *head = temp->next; free(temp); return; } while (temp != NULL && temp->data != key) { prev = temp; temp = temp->next; } if (temp == NULL) return; prev->next = temp->next; free(temp); } // 打印链表 void printList(Node* head) { Node* temp = head; while (temp != NULL) { printf("%d ", temp->data); temp = temp->next; } printf("\n"); } // 释放链表内存 void freeList(Node* head) { Node* temp; while (head != NULL) { temp = head; head = head->next; free(temp); } } int main() { Node* head = NULL; // 插入节点 insertNode(&head, 1); insertNode(&head, 2); insertNode(&head, 3); // 打印链表 printf("插入节点后的链表: "); printList(head); // 删除节点 deleteNode(&head, 2); // 打印链表 printf("删除节点后的链表: "); printList(head); // 释放链表内存 freeList(head); return 0; }

代码解释
1. **节点结构**:`Node` 结构体包含一个整数 `data` 用于存储节点的数据,以及一个指向下一个节点的指针 `next`。
2. **创建节点**:`createNode` 函数用于分配内存并初始化一个新节点。
3. **插入节点**:`insertNode` 函数将新节点插入到链表的尾部。
4. **删除节点**:`deleteNode` 函数用于删除链表中第一个值等于指定键的节点。
5. **打印链表**:`printList` 函数遍历链表并打印每个节点的数据。
6. **释放链表内存**:`freeList` 函数用于释放链表中所有节点的内存,避免内存泄漏。

在 `main` 函数中,我们演示了如何使用这些函数来创建、插入、删除和打印链表。最后,我们释放了链表的内存,以避免内存泄漏。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念