Some Notes

Be hard-working every day.

数据结构:队列和栈

队列和栈都是线性数据结构,它们一个是先进先出,一个是先进后出,有着不同的使用场景。这两个数据结构基于链表,也可以用数组模拟这样的数据结构,通过 C++ 中 STL 提供的容器也可以更加方便快捷地实现。

队列

队列 (queue) 是在一端插入另一段删除的线性表,遵循先进先出,类似于排队,可以称为先进先出 (FIFO) 表。队列中,允许入队 (enqueue) 的一端为队尾,允许出队 (dequeue) 的一端为队头。以后的广度优先搜索就会用到它。

广度优先搜索

这不,刚学完深搜没多久,又来写广搜笔记了(话说我队列笔记还没来得急写呢)。广度优先搜索,广搜,英文为Breadth First Search,简称 BFS。是从一个结点向其他方向的结点不断扩散,如同一道水晕在湖面上荡漾开来。主要可以用来找路径权值一定的最短路径。

数据结构:树的概念与储存

也是一种数据结构,它是非线性数据结构,它能很好地描述一个数据集合中的分支和层次,是一个比较重要的课题,以后的搜索和竞赛都有可能要用到它。树形结构的应用非常广泛,什么索引、语法结构。虽说概念比较繁琐 老师讲了一个小时。有点让人头疼(我咕了好多篇笔记了)。

线性数据结构:链表的模板

链表类似于数组,与数组不同的是,链表可以更加方便地更改数据和删除数据。数组若想将中间的数据删除,则要非很大功夫,而链表就不同了,它的操作更加简单一些(后面说)。

C++ 文件操作

我曾经用 Python 的 tkinter 库写过一个文本编辑器,一百多行,当时幼稚的我以为自己很了不起,因为当时的我认为读写文件是一件很复杂的事情。后来看看,这个东西做得很蹩脚,一个简单的 with open() 就完成了读写文件的操作,可见文件的读写是个很平常的事情。当年的喜悦大概是学到读写文件的喜悦吧。
C++ 读写文件,也算是比较平常的。当数据点大的时候输出到文件里更方便。就在这里小记一下读写文件的操作。