Dart 数据结构与算法
Dart 的核心库比大多数语言更丰富,dart:collection 里有 Queue、LinkedList 和伸展树,但核心 SDK 没有堆,也没有优先队列。在这条路径中,你会用 Dart 亲手实现每一种数据结构。有了健全的空安全,每个可能缺失的链接都是一个必须检查的 Node?。之后你会用这些结构做排序、递归和图搜索,最后完成自动评分的面试题。全部免费,在浏览器中学习,大多数课程都有证书。
377 节课284 个挑战702 道测验题
- 适合初学者
AI 辅助编程帮助
动手实践的互动课程
每节课都有语音讲解
检验所学的测验
终点有一张路径证书,沿途还有 23 张
Dart 数据结构与算法,循序渐进
每一步都由 Coddy 现有的几门课程组成,每个“开始”按钮都会以 Dart 打开课程。还没有 Dart 版本的三门课程列在步骤之后。
- 1
- 2
- 3
- 4
- 5
- 6
在实践中学习
编写真实代码、查询数据库、搭建网站、掌握 AI 提示词。我们的互动课程涵盖现代开发者需要的每一项技能。
打造你的连胜
坚持下去,看着自己不断进步!记录每天的编程习惯,用冻结天数保护连胜,每天打卡都能赢取奖励。
12 天连胜
明天再来,保持你的连胜!
January 2026
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
加倍或归零
第 5 天,共 7 天
连胜冻结
2 left
随时随地写代码
随时随地继续你的编程学习旅程!无需配置,无需下载:打开就能写代码。支持 iOS、Android 和 Web,评分高达 4.9 星。
你并不孤单
在全球排行榜上一较高下,邀请好友赢取奖励,为彼此的成就喝彩。和好友一起编程更有趣!
多种学习方式
阅读、收听、自我测验、问 AI,或者查阅学过的任何内容。每节课都配合你的节奏。
变量是一个有名字的容器,用来存储值,方便你在程序后面引用。
在 Python 中,创建变量只需写下名字、一个等号,再写上要存储的值。
值可以随时间变化。给这个名字重新赋值,它就会指向新的值。
获得证书
每完成一门课程都能获得证书。把证书添加到你的 LinkedIn 个人资料和简历中,向雇主展示你的编程能力。
为什么在 Coddy 上用 Dart 学数据结构与算法
- 空安全用在最关键的地方。链表和树由一个个可能缺失的引用组成,Dart 的健全空安全让每个引用都成为
Node?,跟随之前必须先检查。其他语言要到运行时才暴露的空指针崩溃,Dart 的编译器在你编写数据结构时就会报告。 - 为 Flutter 开发者准备面试。Dart 是你用 Flutter 思考时的语言,而很多公司的移动端面试都有算法环节。Flutter 的 widget 树本身也是一棵树,所以你在这里学到的遍历,和你每天使用的框架是同一种结构。
- 几乎整条路径都用 Dart。每种数据结构、排序、图算法、递归挑战和面试题包都用 Dart 讲授。有三门课用其他语言讲授,列在步骤之后,各附链接:动态规划和 Python 面试系列用 Python,位运算用 C++。位运算从 Dart 读起来很轻松,因为 Dart 也有 C++ 的
&、|、^、~、<<和>>。 - 像面试一样评分。每节课都以一道 Dart 挑战结束,由测试用例检查。没通过时,Bugsy 会阅读你的代码,引导你找到修复方法,而不是直接给出答案。大多数课程提供免费证书,每张证书都可以通过专属 URL 验证。
关于用 Dart 学数据结构与算法的常见问题
Dart 适合学习数据结构与算法吗?
next 的 Node<T> 类就是它看起来的样子,而 dart:collection 提供的内容也比大多数标准库多。有两点值得了解:核心 SDK 没有优先队列;Map 或 Set 字面量实际上是 LinkedHashMap 或 LinkedHashSet,会记住插入顺序。这对输出很方便,但和有序映射的承诺不同。Dart 的哪些类对应哪些数据结构?
List 是动态数组,也可以当作栈;Map 和 Set 是哈希表,默认按插入顺序排列;dart:collection 还提供 Queue(默认是 ListQueue,一种环形缓冲区,除非你选用 DoubleLinkedQueue)、用于继承 LinkedListEntry 的元素的 LinkedList,以及 SplayTreeMap 和 SplayTreeSet 这两种自调整的有序树。如果需要堆,Dart 团队维护的 package:collection 提供了 PriorityQueue。字典树和图则需要你自己实现。Dart 有优先队列吗?
dart:collection 只提供队列、链表和伸展树,PriorityQueue 在 package:collection 中,这个包由 Dart 团队维护,但需要你自己添加。因此在 Dart 面试中让你手写一个堆是很合理的要求,而第二步正是你写堆的地方。什么是伸展树,什么时候该用 SplayTreeMap?
SplayTreeMap?firstKeyAfter 和 lastKeyBefore 找到某个值两侧最近的键时,就用 SplayTreeMap。你在第二步实现的 AVL 树走的是另一条路:每次修改后都重新平衡,严格控制树的高度。这条路径中哪些课程不是用 Dart 讲授的?
List 或 Map,而 toRadixString(2) 可以把 int 以二进制打印出来,这是查看掩码实际内容最快的方法。开始这条路径前需要先会 Dart 吗?
至少要了解类、泛型、列表、映射和空安全。如果这些对你来说还很陌生,可以先学 Coddy 免费的 Dart 课程,学完后再从这条路径继续。
完成数据结构与算法路径能获得证书吗?
能。完成每一步,你就能获得整条数据结构与算法路径的一张免费证书。证书会列出你沿途完成的每门课程,并链接到每门课程各自的证书,任何人都能核实上面列出的每项技能。你可以把它添加到 LinkedIn 个人资料。这是 Coddy 颁发的结业证书,不是经过认证的学历资格。