摘要:并查集(Disjoint Set)用来判断已有的数据是否构成环。在构造图的最小生成树(Minimum Spanning Tree)时,如果采用 Kruskal 算法,每次添加最短路径前,需要先用并查集来判断一下这个路径是否会构成环。思路遍历图的每一条边,按照...
阅读全文
摘要:构建二叉堆二叉堆本身也是个二叉树,有两个限制:堆必须是完全二叉树堆中任一父结点的值大于其左右两子节点的值(大顶堆),或小于其左右两子节点的值(小顶堆)因为完全二叉树中,数据排列顺序是从上而下,从左至右,所以可以用数组的形式保存数据。通常根结点作为数组的 0 ...
阅读全文
摘要:IPC(InterProcess Communication,进程间通信)是进程中的重要概念。Linux 进程之间常用的通信方式有:文件:简单,低效,需要代码控制同步管道:使用简单,默认阻塞匿名管道 pipe:只存在于内核缓冲区,只能用于有血缘关系的进程有名...
阅读全文
摘要:IPC(InterProcess Communication,进程间通信)是进程中的重要概念。Linux 进程之间常用的通信方式有:文件:简单,低效,需要代码控制同步管道:使用简单,默认阻塞匿名管道 pipe:只存在于内核缓冲区,只能用于有血缘关系的进程有名...
阅读全文
摘要:基本概念程序和进程的区别程序是平台相关的二进制文件,只占用磁盘空间。编写完程序代码后,编译为可执行的二进制文件即可。进程是运行中的程序,占用 CPU、内存等系统资源。通过 Shell 命令,可以在终端启动进程,例如执行 ls 命令:找到命令对应的二进制文件使...
阅读全文
摘要:错误提示Linux 提供的系统调用API,通常会在失败的时候返回 -1。如果想获取更多更详细的报错信息,需要借助全局变量 errno 和 perror 函数:#include void perror(const char *s);#include const...
阅读全文
摘要:Linux 系统中的各种输入输出,设计为“一切皆文件”。各种各样的IO统一用文件形式访问。文件类型及基本操作Linux 系统的大部分系统资源都以文件形式提供给用户读写。这些文件可以分为:普通文件:即一般意义上的磁盘文件;设备文件:系统中的具体设备;管道文件、...
阅读全文