最短路径算法源程序代码

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#define JiedianNum 6 //最大结点数

#define NameLenght 3 //节点名字长度

#define Infinity 10000 //若节点间没有路径距离设定为Infinity

char*JiedianNameFile="jiedianname.txt"; //图的顶点--节点名

char*JiedianPathFile="jiedianpath.txt"; //边--节点间的连接关系

char*MinPathDataFile="minpath.txt";

//最短路径数据

/******************************************* *************/

/* 从文件中读入结点数据

*/

/* 函数参数:

*/

/* char jiedian[][]:存放节点名的数组

*/

/* int *NodNum:指针变量,指向存放节点个数的变量*/

/* 输入数据:文本数据文件:JiedianNameFile */

/* 文件数据格式:

*/

/* <节点个数>

*/

/* <节点名>

*/

/* 输出数据:指从该函数中带回到调用函数的数据,包括:*/

/* jiedian[][]--节点名称

*/

/* NodeNum--节点名的个数

*/

/* 返回值:数据读入是否成功的标志

*/

/* 0--失败1--成功

*/

/******************************************* *************/

int InputJiedianNode(char

jiedian[][NameLenght],int*NodeNum ) {int i,n;

FILE *fp;

if(!(fp=fopen(JiedianNameFile,"r")))

{ printf("节点数据文件不存在\n");

getch();

return(0);

}

fscanf(fp,"%d",&n);

if(!n)

{ printf("文件中无节点数据!\n");

getch();

return(0);

}

for(i=0;i

fscanf(fp,"%s",jiedian[i]);

fclose(fp);

*NodeNum=n;

return(1);

}

/******************************************* *************/

/* 从文件中读入最短路径数据*/

/* 函数参数:

*/

/* int dist[][]:节点间最短路径的值

*/

/* int Path[][]:节点间最短路径结点数据*/

/* int *NodNum:指针变量,表示读入数据的多少*/

/* 输入数据:数据文件:MinPathDataFile */

/* 文件数据格式:二进制数据,数据存放顺序:*/

/* <节点个数n>

值> */

/* 输出数据:指从该函数中带回到调用函数的数据,包括:*/

/* jiedian[][]

*/

/* Path[][]

*/

/* NodeNum

*/

/* 返回值:数据读入是否成功的标志

*/

/* 0--失败1--成功

*/

/******************************************* *************/

int InputMinPath(int dist[][JiedianNum],int Path[][JiedianNum],int*NodeNum)

{int n;

FILE *fp;

if(!(fp=fopen(MinPathDataFile,"rb")))

{ printf("最小路径数据文件不存在!\n");

getch();

return(0);

}

fread(&n,sizeof(int),1,fp);

fread(dist,sizeof(int),n*n,fp);

fread(Path,sizeof(int),n*n,fp);

fclose(fp);

*NodeNum=n;

return(1);

}

/******************************************* *************/

/* 查找节点名

*/

/* 函数参数:

*/

/* char str[][]:存放节点名的数组

*/

/* int n:str中数据的行数,即节点名的个数*/

/* char *p:指针变量,表示需要查找的节点名*/

/* 输入数据:全部函数参数均为输入数据

*/

/* 输出数据:返回值作为函数的输出数据

*/

/* 查找成功:被查找的节点名在数组str中的序号*/

/* 查找失败:-1,表示被查找的节点名未出现在数组中*/

相关文档
最新文档