Menu
CoddyTech
学习路径

C# 数据结构与算法

C# 的泛型集合已经包含了这条路径的大部分内容:Stack<T>、Queue<T>、Dictionary<TKey,TValue>、LinkedList<T> 和 SortedSet<T> 分别是栈、队列、哈希表、双向链表和平衡搜索树。用 C# 亲手实现每一种数据结构,再用它们来排序、递归和搜索图,最后完成自动评分的面试题。免费,在浏览器中学习,大多数课程都有证书。

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

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

38 门课程377 节课284 个挑战702 道测验题

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

  1. 1
    开始这一步开始栈、队列、二叉树、哈希表和链表,每一种都用 C# 从零实现,再用来解决问题。学完之后,Stack<T>、Queue<T> 和 Dictionary<TKey,TValue> 就都是你亲手写过的数据结构,你也清楚它们每次调用的开销。开始
  2. 2
    开始这一步开始双向链表、堆和优先队列、字典树、图,以及自平衡的 AVL 树。其中第一种 LinkedList<T> 是现成的;学完这一步,SortedSet<T> 就是一棵你能看懂的平衡树(它是红黑树,你写的是 AVL 树),而堆则是你在任何 .NET 版本上都能自己写出来的东西。开始
  3. 3
    开始这一步开始冒泡、选择、插入、归并、快速、堆、计数和基数排序,用 C# 编写,并在可视化工具中观察运行过程。Array.Sort 和 List<T>.Sort 是内省排序,即以堆排序和插入排序兜底的快速排序,并且不稳定,而 LINQ 的 OrderBy 是稳定的;学完这一步,你就知道其中的原因。开始
  4. 4
    开始这一步开始用 C# 完成的递归挑战,和每节课一样由测试用例评分。在 .NET 中,一个永远到不了基线条件的递归会以 StackOverflowException 结束,而这个异常无法被捕获,所以每个递归方法首先要写好它的出口。动态规划和位运算列在步骤之后,因为它们分别用 Python 和 C++ 教。开始专属页面
  5. 5
    开始这一步开始用 C# 在第二步搭建的图上实现广度优先搜索、深度优先搜索、Dijkstra、Bellman-Ford、拓扑排序、Kruskal 和 Prim。Dijkstra 需要优先队列,而 C# 直到 .NET 6 才有,所以第二步写的那个堆正是你需要掌握的。开始
  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# 学数据结构与算法

  • 清楚每种集合的开销。List<T> 是动态数组,所以 Insert(0, x) 会把后面的每个元素都往后挪;Dictionary<TKey,TValue> 是哈希表,平均是常数时间,但效果取决于键的 GetHashCode 写得好不好。亲手实现这些数据结构之后,这些知识就不再是冷知识,而会直接决定你选用哪种集合。
  • Unity 和 .NET 的语言。C# 是 Unity 游戏的脚本语言,大量企业软件也运行在 .NET 上;两者都离不开同样的数据结构。瓦片地图就是图,寻路就是图搜索,回合顺序或事件调度就是优先队列,所以算法和代码库用的是同一门语言。
  • 几乎整条路径都用 C#。所有数据结构、排序、图算法、递归挑战和面试题包都用 C# 教学。另外三门用其他语言教,列在步骤之后,每门都附有链接:动态规划和 Python 面试系列用 Python,位运算用 C++。三门中位运算最容易从 C# 衔接过去,因为 C# 的位运算符和 C++ 用的是同样的符号。
  • 像面试一样评分。每节课都以一个由测试用例检查的 C# 挑战结束;没通过时,Bugsy 会读你的代码,引导你找到修复方法,而不是直接给出答案。大多数课程都有免费证书,每张都有自己的验证网址。

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

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

适合。它读起来很像 Java:类型让每个节点、引用和泛型参数都一目了然,System.Collections.Generic 涵盖了这条路径上的大部分数据结构。有两个习惯值得尽早养成。LINQ 写起来简洁,但每个 OrderBy 都是一次排序,每个 Where 都是一个循环,它会把你正在学着计算的开销藏起来;另外,Array.Sort 是不稳定排序,只要相等的键必须保持原有顺序,这一点就很重要。

.NET 集合分别对应哪些数据结构?

List<T> 是动态数组;Stack<T> 和 Queue<T> 基于数组实现;LinkedList<T> 是双向链表;Dictionary<TKey,TValue> 和 HashSet<T> 是哈希表;SortedDictionary<TKey,TValue> 和 SortedSet<T> 是红黑树,和你在第二步实现的 AVL 树一样是平衡树。SortedList<TKey,TValue> 是一对按键排序的数组;从 .NET 6 开始,PriorityQueue<TElement,TPriority> 是基于数组的小顶堆。没有字典树或图的类,这些要你自己写。

在 C# 中,树或链表的节点应该用 class 还是 struct?

用 class。struct 是值类型:它根本不能包含自身类型的字段,而且无论在哪里被复制,修改副本都不会影响原值。class 实例是引用,所以节点之间可以像链表或树需要的那样相互指向。struct 留给小的值,比如网格坐标或带权的边。

C# 有优先队列吗?

从 .NET 6 开始就有了:PriorityQueue<TElement,TPriority>,一个基于数组的小顶堆,每个元素入队时都带着自己的优先级;传入一个反转顺序的 IComparer<TPriority>,就能得到大顶堆。.NET Framework 和更早的运行时没有优先队列,所以 C# 开发者长期以来都是自己写堆,或者把 SortedSet<T> 硬改成堆来用,这也是为什么能自己写一个堆至今仍然重要。第二步就会让你动手写。

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

三门:动态规划和 Python 面试系列用 Python 教,位运算用 C++ 教。它们列在步骤之后,每门都有一个链接,会用各自的语言打开。在 C# 中,备忘录表就是一个数组或一个 Dictionary,位运算技巧也能顺利移植,连 C++ 中的那个区别也一样:>> 作用于 int 时保留符号位,作用于 uint 时用 0 填充。

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

至少要掌握类、方法、数组、循环,以及 List<T> 这样的泛型集合。如果这些还没学过,Coddy 的 C# 课程会先带你学会,而且免费,这条路径就从它结束的地方接着往下走。

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

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

其他学习路径

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

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

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

开始学习