Some Notes

Be HardWorking Every Day.

JoyWonderful
50 文章
3 分类
23 标签

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

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

链表的数据组可以叫做“结点”,结点分成两个部分:一个是数据域,一个是指针域,数据域存数据,指针域指向下一个结点的数据地址。正是指针域将链表的每一个结点连在了一起。这种特性有一个好处:内存地址可以不连续,而数组的内存地址是必须要连续的。
比如内存还有 2GB 空闲,我申请了一个 1GB 大的数组,理论上是可以申请下来的,但占用的内存不一定完全是连续的。假设内存被一大堆东西占用的零零碎碎:确实有 2GB,但分成 4 个 500MB,这就申请不下来。而链表呢,可以充分利用内存碎片,通过指针变量,将分开的数据连在一起。

C++ 文件操作

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

深度优先搜索

前置知识:图论

引用广为人知的一句话:

图论 (Graph Theory) 是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。

像深度优先搜索,其实也要用到“图”这个概念。其实,“图”体现了搜索(递归)的过程,计算机中的“图”有很多使用的场景。

概述

深度优先搜索(深搜),英文名 Depth First Search,简称 DFS。即从初始节点出发,按一定顺序不断地向下一节点扩展,达到条件则返回上一个节点,以此类推。这正是一个递归的过程。叫深搜是因为它递归的过程若形象来看是不断“加深”的,这样一搜到底也是递归的特性。

测试全部渲染

个人意见:如何写出漂亮的代码

创作说明:

此文章仅为个人看法。您写代码的习惯可以依据您的个人喜好。此文章只是一些个人的建议。
您在 OI 竞赛中,您完全可以不去注意代码风格。
此文章的建议主要用于工程代码中。

代码的维护还是很重要的。相信谁也不愿意去维护连自己都看得头晕的代码。在这里,我想给出一些个人建议,让代码的可读性强一些。大部分代码以 C++ 为例。这篇文章其实也是给自己看的。