链表
学习链表的工作原理,以及如何实现插入和删除等操作
链表 是 CoddyKit 上的免费 C Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C Academy 课程共包含 3 节课。
C 语言中的链表
C 语言中的链表
链表是一种动态数据结构,其中的元素(节点)通过指针连接起来。
在本课中,您将学习:
- 链表的工作原理。
- 如何在链表中插入和删除节点。
- 链表相对于数组的优势。

示例:定义链表节点
示例:定义链表节点
在 C 语言中,链表节点使用包含数据字段和指向下一个节点的指针的 struct 来定义。
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
int main() {
struct Node *head = NULL;
return 0;
}在开头插入节点
在开头插入节点
要在链表开头插入新节点:
- 创建一个新节点。
- 将其
next指针设置为当前头节点。 - 更新头指针。
示例:在开头插入节点
示例:在开头插入节点
此程序会在链表开头插入一个新节点。
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
void insertAtBeginning(struct Node **head, int newData) {
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = newData;
newNode->next = *head;
*head = newNode;
}
int main() {
struct Node *head = NULL;
insertAtBeginning(&head, 10);
printf("Inserted: %d\n", head->data);
return 0;
}删除节点
删除节点
要从链表中删除节点:
- 找到要删除的节点。
- 更新前一个节点的
next指针。 - 释放已删除节点所占用的内存。
示例:删除节点
示例:删除节点
此程序会从链表中删除一个节点。
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
void deleteNode(struct Node **head, int key) {
struct Node *temp = *head, *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);
}
int main() {
struct Node *head = (struct Node*)malloc(sizeof(struct Node));
head->data = 10;
head->next = NULL;
deleteNode(&head, 10);
return 0;
}链表的优势
链表的优势
与数组相比,链表具有以下优势:
- 大小可动态调整(无需预先指定大小)。
- 插入和删除操作更高效。
- 不会因固定大小而浪费内存。
总结
总结
在本课中,您学习了:
- 链表是什么,以及链表如何工作。
- 如何插入和删除节点。
- 链表相对于数组的优势。
接下来,我们将学习 C 语言中的栈和队列!

常见问题解答
「链表」课时是免费的吗?
是的 — 「链表」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C Academy 课程的其余内容,请升级到 CoddyKit PRO。 C Academy 课程共包含 3 节课。
「链表」这节课中我会学到什么?
学习链表的工作原理,以及如何实现插入和删除等操作 你通过在浏览器中直接运行的动手代码来练习 C Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。
「链表」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C Academy 课中编写并运行代码吗?
能。每节 C Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。