- 博客(18)
- 收藏
- 关注
原创 Crow的数据结构(C#实现)学习笔记#16:Graph实现
正如上文所说,图这一数据结构是十分依赖具体场景的,基本没有通用的实现方法,本文的实现只是无数种实现之一,但基本的思想是不变的。至此,上一学期中所学的所有数据结构已经全部使用C#语言重写了一遍,成功在暑假内完成任务。
2025-08-18 23:19:12
664
原创 Crow的数据结构(C#实现)学习笔记#15:SplayTree实现
到此,教科书上比较基础的树结构全部实现完毕,终于不用被这些树折磨了。在实现树时,我都是采用链式结构,其实有使用线性结构的实现方式,但因为原理是相同,我就不再实现一遍了,剩下的是图,这项工作就完成了。
2025-08-16 21:46:49
851
原创 Crow的数据结构(C#实现)学习笔记#14:RBTree实现
在写代码前,我从来没有意识到红黑树的代码量这么大,虽然情况很多,但是大部分都是左旋和右旋。但是在具体的实现中,我发现一个节点在父节点左右的问题经常会使得代码量直接翻倍,上述的代码就是最好的证明。这使得我的实现看起来极其的繁琐,但我没有好的优化思路。红黑树的很多操作其实画图是很好理解的,但用左旋右旋这种具体的语言会变得很麻烦,所以我还是建议读者多画画图,对于红黑树的学习很有帮助。
2025-08-15 17:31:49
928
原创 Crow的数据结构(C#实现)学习笔记#13:BTree实现
从文本量也可以看出,BTree是相当麻烦的,因此,再次建议先熟悉B树的所有操作后,再来看具体的代码实现。代码前前后后写了8个小时,情况太多了,我经常被绕晕,记得当时第一版代码过测试用例的时候,一堆问题,好歹是扛过来了。树结构快要写完了,接下来是红黑树,也是复杂的结构,争取3天内搞定吧。
2025-08-13 18:43:10
705
原创 Crow的数据结构(C#实现)学习笔记#12:PriorityQueue实现
实现优先级队列的基础是理解堆的算法,因为优先级队列的所有操作基本都是对堆的简单调用。而学习堆,重点是要熟悉数组和完全二叉树之间的联系,这也是教科书中唯一的线性结构的树。
2025-08-10 21:28:31
475
原创 Crow的数据结构(C#实现)学习笔记#11:AVLTree实现
递归很难,所以AVLTree很难,但递归在编程中很常见。把握好递归与迭代的本质差别是学习递归的一个好方法。这几天生了场小病,好久没更新了,之后会加快进度的,暑假不多了。
2025-08-08 21:29:09
591
原创 Crow的数据结构(C#实现)学习笔记#10:Set实现
Set数据结构是这本书最后的温柔了,之后的AVLTree,红黑树,还有图,那些数据结构的算法个顶个的复杂,之后的更新速度也会明显下降,还是希望这个假期能够实现完。
2025-08-03 19:27:58
405
原创 Crow的数据结构(C#实现)学习笔记#9:BinarySearchTree实现
从树结构开始,数据结构的复杂性会迅速提升,单单通过文字很难说明白,因此,本文意在简单说明相关算法和具体的代码实现,如果简单的文字说明让你感到相当困惑,推荐去看更形象的数据结构动画图解。
2025-08-03 14:28:14
631
原创 Crow的数据结构(C#实现)学习笔记#8.5:LinkedList类实现补充
之前在C++中编写迭代器时特别麻烦,各种规则都不清楚,上网找资料也说不明白,还是C#的接口好用,使用一个好用的IDE可以直接把要实现的方法帮忙罗列出来,各种官方文档也比去找C++的标准方便很多,这次是吃到甜头了。
2025-08-02 15:23:44
394
原创 Crow的数据结构(C#实现)学习笔记#8:LinkedList实现
用惯了C的指针,再来看C#的引用类型,真是用得很不顺手,经常习惯性地开始解引用。除开这个问题,C#对空引用的限制极大,到处给我报可能空引用的警告,修那些警告加了好多if语句,看着非常臃肿,虽然安全也是真的安全。
2025-07-31 20:16:59
745
原创 Crow的数据结构(C#实现)学习笔记#7:Dictionary实现
Dictionary是对HashTable做的一层强类型的包装,因为减少了object的使用,因此用户使用时可以减少类型转换,下文是修改过后的HashTable类实现(我实现的数据结构为了避免与标准库重名,会在类名前加一个C)geti++)i++)get= null)get= null)i < 101;Count = 0;i < size;
2025-07-31 14:34:58
268
原创 Crow的数据结构(C#实现)学习笔记#6:HashTable实现
我可以猜到Keys和Values和那些成员类可以弄晕很多人,因为我在组织相关的类继承关系时也很晕,在写这篇博客时也很晕,不知道我的内容组织顺序清不清楚,只能说我已经尽力了。哈希表的实现真的很麻烦,花了我很多时间,希望读者能看得懂。
2025-07-30 16:55:47
817
原创 Crow的数据结构(C#实现)学习笔记#5:String实现
C#中的string的功能之完善,性能之高超出了我的想象(相比C++来说,C++中我们常会自定义一个string类来满足相关的需要),因此在C#中自定义一个string类并没有什么实际用处,本文也只是作为一篇学习笔记,通过实现相关的类来熟悉C#编程和对数据结构的认识。
2025-07-28 17:25:45
402
原创 Crow的数据结构(C#实现)学习笔记#4:BitArray实现
BitArray所说还是线性结构,但比起之前的那些结构复杂许多,而且还有许多东西要仔细考虑,就比如上文反复提及的用Set还是用迭代的方式枚举,还有List是使用int,uint还是byte,考虑到后续的强制类型转换的问题,我选择了int。总之磕磕绊绊,总算是做完了,实在累。
2025-07-26 15:46:29
476
原创 Crow的数据结构(C#实现)学习笔记#3:Stack和Queue实现
可以说,Stack和Queue是对List的一层封装,将需要被用户访问的元素暴露,其余的隐藏。到此,简单的线性结构应该就结束了,之后的数据结构大概就不会有这么多“不做说明”了。
2025-07-25 14:27:20
295
原创 Crow的数据结构(C#实现)学习笔记#2:List<T>的实现
List类是对ArrayList类的泛化,同时我也修改了相关的逻辑,整体看起来更工整,后续可能不知道什么时候我会把ArrayList类再拿出来改一改。完成了List类后,可以用List派生ArrayList类这样再看ArrayList我就满意多了。
2025-07-24 16:21:03
532
原创 Crow的数据结构(C#实现)学习笔记#1:ArrayList实现
以上是ArrayList的实现,说实话写完以后个人并不是很满意,但先做完,再求做好,后续有什么父类啊,接口啊之类的想法再说,从C++转过来写代码确实不习惯,慢慢来吧。
2025-07-23 21:03:27
543
原创 Crow的数据结构(C#实现)学习笔记#0
参考资料是《数据结构与算法 C#语言描述》人民邮电出版社,主要是借助这本书了解一下源码里的方法名和方法效果(我给方法的取名能力实在差),实现的顺序也是书里的顺序,一边看一边写吧,希望暑假能完事。大一下学期学习了数据结构,但因为很多数据结构没有实现过,而且泛型之类的概念很晚才学到,所以有些实现的数据结构看着也越来越不满意,总体上感觉这一门课上的很虚。于是我突发奇想,要不我直接用C#语言重新写一遍数据结构,于是就有了这个系列,第一次写博客,应该会很不成熟,海涵。
2025-07-23 16:14:42
144
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅