0Pricing
C Academy · 课时

链表

学习链表的工作原理,以及如何实现插入和删除等操作

链表 是 CoddyKit 上的免费 C Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C Academy 课程共包含 3 节课。

C 语言中的链表

C 语言中的链表

链表是一种动态数据结构,其中的元素(节点)通过指针连接起来。

在本课中,您将学习:

  • 链表的工作原理。
  • 如何在链表中插入和删除节点。
  • 链表相对于数组的优势。
链表 — 插图 1

示例:定义链表节点

示例:定义链表节点

在 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 语言中的栈和队列!

链表 — 插图 9

常见问题解答

「链表」课时是免费的吗?

是的 — 「链表」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 链表
  2. 栈与队列
  3. 树与图
← 返回 C Academy