自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除