【算法导论】程序出错的解释说明

我在博客的所有程序是在vs2008上运行的,与vc 6.0有点区别,主要是循环体中的循环变量的作用域(vs2008相比vc 6.0更加遵循了C标准),如果程序出错,则主要体现在循环变量的重复定义上。

例如:在vs2008或vs2010上,程序为:

#include<stdio.h>
void main()
{
int i=0;
for(int i=0;i<5;i++)//i的作用域只在本循环语句内
printf("%d ",i);
}

则在VC 6.0上需改为:

#include<stdio.h>
void main()
{
int i=0;
for(i=0;i<5;i++)//区别在这
printf("%d ",i);

} 

如果大家懂得一点程序改错的技巧的话,根据错误提示也很容易修改正确。如果错误仍未解决可以发邮件给我,邮箱771257840@qq.com

时间: 2024-08-03 00:09:41

【算法导论】程序出错的解释说明的相关文章

【算法导论】最大流算法

最大流问题就是在容量容许的条件下,从源点到汇点所能通过的最大流量. 1 流网络        网络流G=(v, E)是一个有向图,其中每条边(u, v)均有一个非负的容量值,记为c(u, v) ≧ 0.如果(u, v) ∉ E则可以规定c(u, v) = 0.网络流中有两个特殊的顶点,即源点s和汇点t.  与网络流相关的一个概念是流.设G是一个流网络,其容量为c.设s为网络的源点,t为汇点,那么G的流是一个函数f:V×V →R,满足一下性质:    容量限制:对所有顶点对u,v∈V,满足f(u,

【算法导论】二叉排序树

二叉排序树 二叉排序树的性质:每个节点的左子树中的所有节点的关键字都小于该节点的关键值,而右子树中的所有节点的关键字都大于该节点的关键值.  二叉排序树的构造 二叉排序树的构造是指将一个给定的数据元素构造为相应的二叉排序树. 基本思想为: 对于任给的一组数据元素{ R1, R2, -, Rn } , 可按以下方法来构造二叉排序树:         (1) 令R1为二叉树的根;          (2) 若R2<R1, 令R2为R1左子树的根结点,否则R2为R1右子树的根结点:         (

【算法导论】每对顶点之间的最短路径算法

        对于一个顶点数为N的有向网路图,我们可以通过前面所提到的单源最短路径算法执行N次来获得每一对顶点间的最短路径.这种方法的时间复杂度为O(N*N*N).如果网络中有负权值的边,则需要使用前面提到的单源最短路径算法之Bellman-Floyd算法.总之,总可以通过单源最短路径来求得每对顶点间的最短路径.这里我就不再用程序实现上述方法,下面介绍Floyd解决这一问题的另一种算法,它形式简单,利于理解,而且时间复杂度同样为O(N*N*N).        Floyd算法是根据给定有向网络

【算法导论】二叉树的深度优先遍历

二叉树的深度优先遍历 二叉树的遍历可以分为深度优先遍历和广度优先遍历.本篇介绍深度优先遍历,下一篇介绍广度优先遍历.         根据二叉树的递归定义可知,二叉树是由根结点(D).左子树(L)和右子树(R)三个基本部分组成.只要能依次遍历这三个基本部分,便可遍历整个二叉树.这三个部分的排列组合为3!=6种,若限定按照先左后右进行遍历,则只有三种遍历方式:DLR(先序).LDR(中序).LRD(后序). 具体实现如下: #include<stdio.h> #include<malloc

【算法导论】单源最短路径之Bellman-Ford算法

        单源最短路径指的是从一个顶点到其它顶点的具有最小权值的路径.我们之前提到的广度优先搜索算法就是一种无权图上执行的最短路径算法,即在所有的边都具有单位权值的图的一种算法.单源最短路径算法可以解决图中任意顶点间的最短路径.         对于单源最短路径问题,一般有两种经典解法:1.对于有权值为负的图,采用Bellman-Ford算法:2.对于权值全为正的图,常采用Dijkstra算法.本文介绍Bellman-Ford算法,下一篇介绍Dijkstra算法. Bellman-Ford

【算法导论】单源最短路径之Dijkstra算法

        Dijkstra算法解决了有向图上带正权值的单源最短路径问题,其运行时间要比Bellman-Ford算法低,但适用范围比Bellman-Ford算法窄. 迪杰斯特拉提出的按路径长度递增次序来产生源点到各顶点的最短路径的算法思想是:对有n个顶点的有向连通网络G=(V, E),首先从V中取出源点u0放入最短路径顶点集合U中,这时的最短路径网络S=({u0}, {}); 然后从uU和vV-U中找一条代价最小的边(u*, v*)加入到S中去,此时S=({u0, v*}, {(u0,

【算法导论】图的广度优先搜索遍历(BFS)

       图的存储方法:邻接矩阵.邻接表        例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表:         邻接表存储方法是一种顺序存储与链式存储相结合的存储方法.在这种方法中,只考虑非零元素,所以在图中的顶点很多而边很少时,可以节省存储空间.         邻接表存储结构由两部分组成:对于每个顶点vi, 使用一个具有两个域的结构体数组来存储,这个数组称为顶

【算法导论】邻接表存储的拓扑排序

        上一篇文章中讲述了用邻接矩阵存储的图的拓扑排序,下面本文介绍用邻接表存储的图的拓扑排序.         关于拓扑排序的概念及基本思想,我在上一篇文章中已经较为详细的描述了,这里不在介绍.我们知道利用邻接矩阵进行拓扑排序时,程序实现较为简单,但是效率不高,算法的复杂度为O(n^3).而利用邻接表会使入度为0的顶点的操作简化,从而提高算法的效率. 在邻接表存储结构中,为了便于检查每个顶点的入度,可在顶点表中增加一个入度域(id),这样的邻接表如下图所示,这样只需对由n个元素构成的顶

【算法导论】求二叉树的叶子数和深度

二叉树的叶子数和深度 二叉树的遍历算法是许多二叉树运算的算法设计的基础,因此遍历算法的应用很广泛.下面以遍历算法求二叉树的叶子数和深度为例,来加深对于二叉树遍历算法的理解.1. 统计二叉树中的叶子结点数因为叶子结点是二叉树中那些左孩子和右孩子均不存在的结点,所以可在二叉树的遍历过程中,对这种特殊结点进行计数,来完成对叶子结点数的统计.这个统计可在任何一种遍历方式下给出,下面是利用中序遍历来实现的算法: /**********************************************