重温
大学时候学习的数据结构这门基础课程已经忘得差不多了,现在开始重拾
为什么要学习数据结构
- 数据结构是程序员同学必学,必会的课程。不会数据结构,严格意义来说不能称之为程序员。
- 数据结构研究的是数据如何在计算机中进行组织和存储,使得我们可以高效的获取数据或者修改数据。
总体而言。数据结构可以分为三种结构
线性结构
- 数组
- 栈
- 队列
- 链表
- 哈希表 …
树结构
- 二叉树
- 二分搜索树
- AVL
- 红黑树
- Treap
- Splay
- 堆
- Tril
- 线段树
- K-D数
- 并查集
- 哈夫曼树…
图结构
- 邻接矩阵
- 领接表
在计算机的世界里,数据结构无处不在
数据库
数据库是我们在应用开发中要大量使用的基础工具,他本身也是从底层实现的一个软件,能够让我们通过sql语句来使用它。要开发这样的一个软件,就必须要使用大量的数据结构。包括:树结构;AVL;红黑树;Treap;伸展树;B树;哈希表等。如果没有这些数据结构,我们是无法开发出数据库的。
操作系统
操作系统本质上也是一个软件,是一个平台性的软件。我们可以在这个平台软件上开发各种各样的应用。要开发这个软件也需要大量的数据结构。举一个简单的例子:快速在多任务间切换,就需要用到系统栈和优先队列(堆)等数据结构。
文件压缩
平时我们用的比较多rar压缩软件,png格式的图片,MP3,MP4
PDF文件都用到了压缩算法。文件压缩的时候也需要借助数据结构,比如最基础的压缩算法使用的的数据结构就是哈夫曼树。虽然现在这些软件用到的压缩算法的数据结构已经不是哈夫曼树了,而是更加的复杂的数据结构。但不管用什么样的数据结构,数据结构是不可缺少的。
数据结构是算法的基石
比如游戏中的寻路算法,用到的就是图论算法。DFS算法使用的是栈这个数据结构,BFS算法使用的是队列这个数据结构。
计算机科学里面有一句名言:数据结构+算法=程序。