如何解决排长队问题:让后来的人排到前面去?
假设在非洲的某一个村庄里,只有一口井。每天在井口排队接水的人都很多。有什么办法可以让接水的队伍变得短一些? 美国罗切斯特大学的经济学教授Steven Landsburg指出这样一种方法:让村长规定,晚到的接水村民,可以排到队伍的前头去接水。...
假设在非洲的某一个村庄里,只有一口井。每天在井口排队接水的人都很多。有什么办法可以让接水的队伍变得短一些? 美国罗切斯特大学的经济学教授Steven Landsburg指出这样一种方法:让村长规定,晚到的接水村民,可以排到队伍的前头去接水。...
前面所讨论的线性表元素之间都是一对一的关系,今天我们所看到的结构各元素之间却是一对多的关系。树在计算机中有着广泛的应用,甚至在计算机的日常使用中,也可以看到树形结构的身影,如下图所示的Windows资源管理器和应用程序的菜单都属于树形结构。...
前面几篇已经介绍了线性表和树两类数据结构,线性表中的元素是“一对一”的关系,树中的元素是“一对多”的关系,本章所述的图结构中的元素则是“多对多”的关系。图(Graph)...
上一篇我们了解了图的基本概念、术语以及存储结构,还对邻接表结构进行了模拟实现。本篇我们来了解一下图的遍历,和树的遍历类似,从图的某一顶点出发访问图中其余顶点,并且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traversing Gra...
一、不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据。和用int表示指针异曲同...
一、计算机知道数据类型吗? 1.1 神奇的数据类型 At first,计算机中绝大部分数据都放到内存中的,不同的数据放到不同的内存区域中。But,内存角度没有数据类型,只有二进制;数据以字节(8位二进制)为单位存取。不同数据类型占据不同...
一、内存的使用 1.1 你创建的内存区域可能是脏的 当我们创建一个内存区域的时候,内存中的数据可能是乱七八糟的(可能是其他代码用过后遗留的数据),如下面一段代码: int main(int argc, char *argv[]){ //...
一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。 2、堆区(heap):一般是由程序员分配释放,若程...
图的“多对多”特性使得图在结构设计和算法实现上较为困难,这时就需要根据具体应用将图转换为不同的树来简化问题的求解。 一、生成树与最小生成树 1.1 生成树 对于一个无向图,含有连通图全部顶点的一个极小连通子图成为...
一、使用指针传出分解后的数字 实现一个方法“多个返回值”的效果:返回一个三位数数字的个位、十位、百位。这里,我们借助指针来”返回“分解后的结果。这种应用也是最常见的指针应用。 // fun...