Menu
CoddyTech
学习路径

C++ 数据结构与算法

STL 就是这条路径的库版本:std::vector、std::unordered_map、std::priority_queue 和 std::set 分别是动态数组、哈希表、堆和平衡树。先用 C++ 的类和指针亲手实现每一种,再去使用 STL,清楚每次调用的开销。位运算也直接用 C++ 教。免费,在浏览器中学习,大多数课程都有证书。

394 节课284 个挑战702 道测验题

C++ 数据结构与算法,一步一步来

39 门课程394 节课284 个挑战702 道测验题

每一步都是 Coddy 上现有的一组课程,每个“开始”按钮都会用 C++ 打开它们。暂时还不是用 C++ 教的两门课程列在步骤之后。

  1. 1
    开始这一步开始栈、队列、二叉树、哈希表和链表,每一种都用 C++ 的类和指针从零实现,再用来解决问题。学完之后,std::stack、std::queue 和 std::unordered_map 就都是你亲手写过的数据结构了。开始
  2. 2
    开始这一步开始双向链表、堆和优先队列、字典树、图,以及自平衡的 AVL 树。std::priority_queue 默认是大顶堆,而 Python 和 Java 的堆是小顶堆;自己写过一个之后,用 std::greater 把它反过来就是显而易见的事。开始
  3. 3
    开始这一步开始冒泡、选择、插入、归并、快速、堆、计数和基数排序,用 C++ 编写,并在可视化工具中观察运行过程。std::sort 通常是内省排序,也就是会退回到堆排序的快速排序,std::stable_sort 则是归并排序;学完这一步,你就明白这些选择为什么合理。开始
  4. 4
  5. 5
    开始这一步开始用 C++ 在第二步搭建的图上实现广度优先搜索、深度优先搜索、Dijkstra、Bellman-Ford、拓扑排序、Kruskal 和 Prim。Dijkstra 用的优先队列就是带 std::greater 的 std::priority_queue:第二步写的那个堆的库版本。开始
  6. 6
你将获得
学编程所需的一切

在实践中学习

编写真实代码、查询数据库、搭建网站、掌握 AI 提示词。我们的互动课程涵盖现代开发者需要的每一项技能。

playground.js
代码编辑器
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
测试 #1test Case Success icon
测试 #2test Case Success icon
测试 #3test Case Failure icon
输入
"Alex"
输出
"Hello, Coddy! Alex"

打造你的连胜

坚持下去,看着自己不断进步!记录每天的编程习惯,用冻结天数保护连胜,每天打卡都能赢取奖励。

12 天连胜

明天再来,保持你的连胜!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

加倍或归零

第 5 天,共 7 天

fire Freeze icon

连胜冻结

2 left

随时随地写代码

随时随地继续你的编程学习旅程!无需配置,无需下载:打开就能写代码。支持 iOS、Android 和 Web,评分高达 4.9 星。

Python
7连胜
250分数
5能量
变量
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
继续
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
学习旅程
目标
排行榜
个人主页
4.9
星星星星星
评分

你并不孤单

在全球排行榜上一较高下,邀请好友赢取奖励,为彼此的成就喝彩。和好友一起编程更有趣!

挑战者联赛
挑战者联赛前 7 名晋级
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up icon晋级区leaderboard Arrow Up icon

多种学习方式

阅读、收听、自我测验、问 AI,或者查阅学过的任何内容。每节课都配合你的节奏。

变量入门
音频

变量是一个有名字的容器,用来存储值,方便你在程序后面引用。

在 Python 中,创建变量只需写下名字、一个等号,再写上要存储的值。

值可以随时间变化。给这个名字重新赋值,它就会指向新的值。

1xSarah

获得证书

每完成一门课程都能获得证书。把证书添加到你的 LinkedIn 个人资料和简历中,向雇主展示你的编程能力。

Coddy结业证书
兹证明张三已成功完成
python iconPython 基础
已验证
日期2026年1月
LinkedIn添加到 LinkedIn

为什么在 Coddy 用 C++ 学数据结构与算法

  • 算法竞赛的通用语言。大多数算法竞赛选手用 C++,看中的是它的速度和 STL,几乎所有编程面试也都接受它。用 C++ 学数据结构与算法,就是在学竞赛题解所用的那门“方言”。
  • 看得见的指针。C++ 中的链表就是节点和指针,AVL 旋转就是几次指针调整,析构函数负责释放你分配的内存。你会按机器存储它们的方式来学习这些数据结构,然后再交给 STL 去做。
  • 位运算就用它本来的语言学。这条路径的位运算课程本身就用 C++ 教,所以在这里它不是绕路:掩码、移位和位运算技巧,都用你正在写的语言来学。只有动态规划和 Python 面试系列不是:它们用 Python 教,列在步骤之后。
  • 像面试一样评分。每节课都以一个由测试用例检查的 C++ 挑战结束;没通过时,Bugsy 会读你的代码,引导你找到修复方法,而不是直接给出答案。大多数课程都有免费证书,每张都有自己的验证网址。

C++ 数据结构与算法常见问题

C++ 适合学数据结构与算法吗?

它是算法竞赛中最常见的选择,用来准备面试也很有优势:速度快,标准库几乎涵盖你需要的所有数据结构。代价是代码更多、出错的方式也更多,从悬空指针到失效的迭代器。像这条路径一样先亲手实现这些数据结构,那些问题就不会再让你措手不及。

STL 容器分别对应哪些数据结构?

std::vector 是动态数组;std::stack 和 std::queue 是适配器,默认基于 std::deque;std::list 是双向链表;std::unordered_map 和 std::unordered_set 是哈希表;std::priority_queue 是二叉堆(默认是大顶堆,这一点和 Python、Java 不同);std::map 和 std::set 是平衡二叉搜索树,实际上一般是红黑树。STL 没有字典树或图容器,这些要你自己写。

数据结构应该自己实现,还是直接用 STL?

两者都要,而且按这个顺序。每种数据结构亲手实现一次,弄明白为什么 std::unordered_map 的查找平均是常数时间、为什么 std::map 的键是有序的,之后就处处使用 STL。在竞赛或面试中,没有人指望你手写一棵红黑树;大家期望的是你能选对容器,并且清楚它的开销。

学数据结构与算法用 C++ 还是 Python?

如果你打算参加算法竞赛,或者面试的岗位要求 C++,就选 C++;如果你想用最短的路径把想法变成能运行的代码,就选 Python。算法本身完全一样,所以很多人用一种语言学习,用另一种语言参赛。这条路径上的每门数据结构课程都同时提供这两种语言。

这条路径上哪些课程不是用 C++ 教的?

两门:动态规划和 Python 面试系列,都用 Python 教。它们列在步骤之后,链接会用 Python 打开。其中的思路可以原样迁移:在 C++ 中,备忘录表就是一个 std::vector 或 std::unordered_map。

开始这条路径之前需要会 C++ 吗?

至少要掌握类、指针、引用和 std::vector。如果这些还没学过,Coddy 的 C++ 课程会先讲清楚,而且免费,这条路径就从它结束的地方接着往下走。

完成数据结构与算法路径能获得证书吗?

能。完成每一步,你就能获得整条数据结构与算法路径的一张免费证书。证书会列出你沿途完成的每门课程,并链接到每门课程各自的证书,任何人都能核实上面列出的每项技能。你可以把它添加到 LinkedIn 个人资料。这是 Coddy 颁发的结业证书,不是经过认证的学历资格。

其他学习路径

同样的课程,按不同职业方向编排。进度会保留:在一条路径上完成的课程,在所有包含它的路径上都算完成。

全部学习路径
Coddy 编程语言插图

免费开始数据结构与算法路径

开始学习