c++查询最短路径示例查询最短路径示例
代码如下:
//shortest_path.c
#include<stdio.h>
#include<stdlib.h>//用file
#include<string.h>//可用gets(),puts()
#include”shortest_path.h”
#define MAX 32767
#define MENU “欢迎进入导航系统!==========菜单===========0、载入北外地图1、建立地图2、查询最短路径
3、退出==========菜单===========”
struct stmap map;//无向网
const char *filepath1=”D:\spots.dat”;
const char *filepath2=”D:\paths.dat”;
int load1()
{
FILE *fp;
int i;
fp=fopen(filepath1,”r”);
if(fp==NULL){printf(“spots文件打开异常,读取失败”);return -1;}
fread(&map.spotnum,sizeof(int),1,fp);
for(i=0;i<map.spotnum;i++)
{
fread(map.spot[i].name,sizeof(char),10,fp);
fread(map.spot[i].intro,sizeof(char),20,fp);
}
fclose(fp);
return 0;
}
int load2()
{
FILE *fp;
int i,j;
fp=fopen(filepath2,”r”);
if(fp==NULL){printf(“paths文件打开异常,读取失败”);return -1;}
fread(&map.pathmatrix,sizeof(int),1,fp);
for(i=0;i<map.spotnum;i++)
for(j=0;j<map.spotnum;j++)
fread(&map.pathmatrix[i][j],sizeof(int),1,fp);
fclose(fp);
return 0;
}
void loadmap()
{
if(load1()==0)
printf(“spot读入成功”);
else
printf(“spot读入失败”);
if(load2()==0)
printf(“path读入成功”);
else
printf(“path读入失败”);
}
void drawmap()//直接输入
{
int i;
int a,b;