【基础知识】| 作者 / Edison Zhou
这是恰童鞋骚年的第250篇原创内容
不知不觉,每天5分钟学习数据结构就更新完了,本篇将该系列所有文章整理起来作为一个目录,方便你的快速阅读。
1线性表
线性表是最简单也是在编程当中使用最多的一种数据结构。例如,英文字母表(A,B,C,D...,Z)就是一个线性表,表中的每一个英文字母都是一个数据元素;又如,成绩单也是一个线性表,表中的每一行是一个数据元素,每个数据元素又由学号、姓名、成绩等数据项组成。顺序表和链表作为线性表的两种重要的存在形式,它们是堆栈、队列、树、图等数据结构的实现基础。
(1)线性表基础
(2)顺序表
(3)单链表 Part 1
(4)单链表 Part 2
(5)双链表 Part 1
(6)双链表 Part 2
(7)循环链表 Part 1
(8)循环链表 Part 2
(9)约瑟夫问题
2栈和队列
现实生活中的事情往往都能总结归纳成一定的数据结构,例如餐馆中餐盘的堆叠和使用,羽毛球筒里装的羽毛球等都是典型的栈结构。而在.NET中,值类型在线程栈上进行分配,引用类型在托管堆上进行分配。栈和队列都是常用的数据结构,它们的逻辑结构与线性表相同,不同之处则在于操作受某种特殊限制。因此,栈和队列也被称为操作受限的线性表。
(1)栈 Part 1
(2)栈 Part 2
(3)队列 Part 1
(4)队列 Part 2
(5)队列 Part 3
3二叉树
树和之前学习的一对一关系的线性结构已经有了不同,树是一对多的关系了。树在计算机中有着广泛的应用,甚至在计算机的日常使用中,也可以看到树形结构的身影,如Windows资源管理器和应用程序的菜单都属于树形结构。
(1)二叉树 Part 1
(2)二叉树 Part 2
(3)二叉树 Part 3
(4)二叉树 Part 4
(5)二叉树 Part 5
4图
线性表中的元素是“一对一”的关系,树中的元素是“一对多”的关系,本章所述的图结构中的元素则是“多对多”的关系。图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的。现实生活中的很多事物都可以抽象为图,例如世界各地接入Internet的计算机通过网线连接在一起,各个城市和城市之间的铁轨等等。
(1)图 Part 1
(2)图 Part 2
(3)图 Part 3
(4)图 Part 4
(5)图 Part 5
(6)图 Part 6
(7)图 Part 7
(8)图 Part 8
(9)图 Part 9
(10)图 Part 10
5查找
只要你打开电脑,就会涉及到查找技术。如炒股软件中查股票信息、硬盘文件中找照片、在光盘中搜DVD,甚至玩游戏时在内存中查找攻击力、魅力值等数据修改用来作弊等,都要涉及到查找。当然,在互联网上查找信息就更加是家常便饭。查找是计算机应用中最常用的操作之一,也是许多程序中最耗时的一部分,查找方法的优劣对于系统的运行效率影响极大。
(1)查找 Part 1
(2)查找 Part 2
(3)查找 Part 3
(4)查找 Part 4
(5)查找 Part 5
6排序
排序(Sorting)是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为按关键字“有序”的记录序列。如何进行排序,特别是高效率地进行排序是计算机工作者学习和研究的重要课题之一。排序有内部排序和外部排序之分,若整个排序过程不需要访问外存便能完成,则称此类排序为内部排序,反之则为外部排序。下面会主要介绍插入排序、交换排序、选择排序和归并排序这几种内部排序方法。
(1)插入类排序
(2)交换类排序
(3)选择类排序
(4)归并类排序
7小结
到此为止,每天5分钟用C#学习数据结构这个系列文章就到此结束了,不知道在这么多个工作日的清晨是否对你产生了帮助。当然,无论是这些日子里的鼓励还是批评,我都虚心接受。
接下来,我们会通过《剑指Offer》中的一些经典题目来复习我们所学的数据结构知识,当然必须是C#代码实现,有兴趣的童鞋可以继续关注。
往期精彩回顾
.NET Core on K8s 学习实践系列文章
如果本文对你有用,
不妨点个“在看”或者转发朋友圈
????点击阅读原文,获取文章源码