html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

c++查询最短路径示例_编程语言综合

[ ] 已经帮助:人解决问题

   这篇文章主要介绍了c++查询最短路径示例,需要的朋友可以参考下YXkHTML5中文学习网 - HTML5先行者学习网

  代码如下:YXkHTML5中文学习网 - HTML5先行者学习网

  //shortest_path.cYXkHTML5中文学习网 - HTML5先行者学习网

  #includeYXkHTML5中文学习网 - HTML5先行者学习网

  #include//用fileYXkHTML5中文学习网 - HTML5先行者学习网

  #include//可用gets(),puts()YXkHTML5中文学习网 - HTML5先行者学习网

  #include"shortest_path.h"YXkHTML5中文学习网 - HTML5先行者学习网

  #define MAX 32767YXkHTML5中文学习网 - HTML5先行者学习网

  #define MENU "欢迎进入导航系统!/n==========菜单===========/n0、载入北外地图/n1、建立地图/n2、查询最短路径/n3、退出/n==========菜单===========/n"YXkHTML5中文学习网 - HTML5先行者学习网

  struct stmap map;//无向网YXkHTML5中文学习网 - HTML5先行者学习网

  const char *filepath1="D://spots.dat";YXkHTML5中文学习网 - HTML5先行者学习网

  const char *filepath2="D://paths.dat";YXkHTML5中文学习网 - HTML5先行者学习网

  int load1()YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  FILE *fp;YXkHTML5中文学习网 - HTML5先行者学习网

  int i;YXkHTML5中文学习网 - HTML5先行者学习网

  fp=fopen(filepath1,"r");YXkHTML5中文学习网 - HTML5先行者学习网

  if(fp==NULL){printf("spots文件打开异常,读取失败");return -1;}YXkHTML5中文学习网 - HTML5先行者学习网

  fread(&map.spotnum,sizeof(int),1,fp);YXkHTML5中文学习网 - HTML5先行者学习网

  for(i=0;iYXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  fread(map.spot[i].name,sizeof(char),10,fp);YXkHTML5中文学习网 - HTML5先行者学习网

  fread(map.spot[i].intro,sizeof(char),20,fp);YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  fclose(fp);YXkHTML5中文学习网 - HTML5先行者学习网

  return 0;YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  int load2()YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  FILE *fp;YXkHTML5中文学习网 - HTML5先行者学习网

  int i,j;YXkHTML5中文学习网 - HTML5先行者学习网

  fp=fopen(filepath2,"r");YXkHTML5中文学习网 - HTML5先行者学习网

  if(fp==NULL){printf("paths文件打开异常,读取失败");return -1;}YXkHTML5中文学习网 - HTML5先行者学习网

  fread(&map.pathmatrix,sizeof(int),1,fp);YXkHTML5中文学习网 - HTML5先行者学习网

  for(i=0;iYXkHTML5中文学习网 - HTML5先行者学习网

  for(j=0;jYXkHTML5中文学习网 - HTML5先行者学习网

  fread(&map.pathmatrix[i][j],sizeof(int),1,fp);YXkHTML5中文学习网 - HTML5先行者学习网

  fclose(fp);YXkHTML5中文学习网 - HTML5先行者学习网

  return 0;YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  void loadmap()YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  if(load1()==0)YXkHTML5中文学习网 - HTML5先行者学习网

  printf("spot读入成功/n");YXkHTML5中文学习网 - HTML5先行者学习网

  elseYXkHTML5中文学习网 - HTML5先行者学习网

  printf("spot读入失败/n");YXkHTML5中文学习网 - HTML5先行者学习网

  if(load2()==0)YXkHTML5中文学习网 - HTML5先行者学习网

  printf("path读入成功/n");YXkHTML5中文学习网 - HTML5先行者学习网

  elseYXkHTML5中文学习网 - HTML5先行者学习网

  printf("path读入失败/n");YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  void drawmap()//直接输入YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  int i;YXkHTML5中文学习网 - HTML5先行者学习网

  int a,b;YXkHTML5中文学习网 - HTML5先行者学习网

  char s1[10],s2[10];YXkHTML5中文学习网 - HTML5先行者学习网

  printf("共有几个景点?(<=20)");//map.spotmunYXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  scanf("%d",&map.spotnum);YXkHTML5中文学习网 - HTML5先行者学习网

  printf("共有几条景点与景点之间直接相连的路径?");//map.pathnumYXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);//清空键盘缓冲区,在"stdio.h"中YXkHTML5中文学习网 - HTML5先行者学习网

  scanf("%d",&map.pathnum);YXkHTML5中文学习网 - HTML5先行者学习网

  for(a=0;aYXkHTML5中文学习网 - HTML5先行者学习网

  for(b=0;bYXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  if(a==b)map.pathmatrix[a][b]=0;YXkHTML5中文学习网 - HTML5先行者学习网

  else map.pathmatrix[a][b]=MAX;YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  for(i=0;iYXkHTML5中文学习网 - HTML5先行者学习网

  printf("请输入第%d个景点的名称(<=10letters)",i+1);YXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  gets(map.spot[i].name);YXkHTML5中文学习网 - HTML5先行者学习网

  printf("请输入第%d个景点的介绍(<=20letters)",i+1);YXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  gets(map.spot[i].intro);YXkHTML5中文学习网 - HTML5先行者学习网

  }//输入景点名字和简介map.spot[].name;map.spot[].introYXkHTML5中文学习网 - HTML5先行者学习网

  for(i=0;iYXkHTML5中文学习网 - HTML5先行者学习网

  do{YXkHTML5中文学习网 - HTML5先行者学习网

  printf("请输入第%d条路径的起点",i+1);YXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  gets(s1);YXkHTML5中文学习网 - HTML5先行者学习网

  for(a=0;aYXkHTML5中文学习网 - HTML5先行者学习网

  if(!strcmp(map.spot[a].name,s1))break;//查找景点编号YXkHTML5中文学习网 - HTML5先行者学习网

  if(a==map.spotnum)printf("不存在此景点,请重新输入。/n");YXkHTML5中文学习网 - HTML5先行者学习网

  }while(a==map.spotnum);YXkHTML5中文学习网 - HTML5先行者学习网

  do{YXkHTML5中文学习网 - HTML5先行者学习网

  printf("请输入第%d条路径的终点",i+1);YXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  gets(s2);YXkHTML5中文学习网 - HTML5先行者学习网

  for(b=0;bYXkHTML5中文学习网 - HTML5先行者学习网

  if(!strcmp(map.spot[b].name,s2))break;YXkHTML5中文学习网 - HTML5先行者学习网

  if(b==map.spotnum)printf("不存在此景点,请重新输入。/n");YXkHTML5中文学习网 - HTML5先行者学习网

  }while(b==map.spotnum);YXkHTML5中文学习网 - HTML5先行者学习网

  printf("请输入第%d条路径的长度",i+1);YXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  scanf("%d",&map.pathmatrix[a][b]);YXkHTML5中文学习网 - HTML5先行者学习网

  map.pathmatrix[b][a]=map.pathmatrix[a][b];//输入路径长度YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  void shortestpath()//最短路径,输入起点终点输出路径和路程YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  struct stspath spath[20];YXkHTML5中文学习网 - HTML5先行者学习网

  int s,t,v,w,min;YXkHTML5中文学习网 - HTML5先行者学习网

  char s1[10],s2[10];YXkHTML5中文学习网 - HTML5先行者学习网

  int pathorder[20];YXkHTML5中文学习网 - HTML5先行者学习网

  struct stspath *p;//pathorderYXkHTML5中文学习网 - HTML5先行者学习网

  do{YXkHTML5中文学习网 - HTML5先行者学习网

  printf("请输入起点");//查找起点的景点编号YXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  gets(s1);YXkHTML5中文学习网 - HTML5先行者学习网

  for(s=0;sYXkHTML5中文学习网 - HTML5先行者学习网

  if(!strcmp(map.spot[s].name,s1))break;YXkHTML5中文学习网 - HTML5先行者学习网

  if(s==map.spotnum)printf("不存在此景点,请重新输入。/n");YXkHTML5中文学习网 - HTML5先行者学习网

  }while(s==map.spotnum);YXkHTML5中文学习网 - HTML5先行者学习网

  do{YXkHTML5中文学习网 - HTML5先行者学习网

  printf("请输入终点");//查找终点的景点编号YXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  gets(s2);YXkHTML5中文学习网 - HTML5先行者学习网

  for(t=0;tYXkHTML5中文学习网 - HTML5先行者学习网

  if(!strcmp(map.spot[t].name,s2))break;YXkHTML5中文学习网 - HTML5先行者学习网

  if(t==map.spotnum)printf("不存在此景点,请重新输入。/n");YXkHTML5中文学习网 - HTML5先行者学习网

  }while(t==map.spotnum);YXkHTML5中文学习网 - HTML5先行者学习网

  for(v=0;vYXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  spath[v].length=MAX;YXkHTML5中文学习网 - HTML5先行者学习网

  spath[v].in=0;YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  spath[s].in=1;YXkHTML5中文学习网 - HTML5先行者学习网

  spath[s].length=0;YXkHTML5中文学习网 - HTML5先行者学习网

  spath[s].pior=NULL;YXkHTML5中文学习网 - HTML5先行者学习网

  v=s;YXkHTML5中文学习网 - HTML5先行者学习网

  while(v!=t){YXkHTML5中文学习网 - HTML5先行者学习网

  for(w=0;wYXkHTML5中文学习网 - HTML5先行者学习网

  if((!spath[w].in)&&(spath[w].length>spath[v].length+map.pathmatrix[v][w])){YXkHTML5中文学习网 - HTML5先行者学习网

  spath[w].length=spath[v].length+map.pathmatrix[v][w];YXkHTML5中文学习网 - HTML5先行者学习网

  spath[w].pior=&spath[v];YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  min=MAX;YXkHTML5中文学习网 - HTML5先行者学习网

  for(w=0;wYXkHTML5中文学习网 - HTML5先行者学习网

  if((!spath[w].in)&&(spath[w].lengthYXkHTML5中文学习网 - HTML5先行者学习网

  min=spath[w].length;YXkHTML5中文学习网 - HTML5先行者学习网

  v=w;YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  spath[v].in=1;YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  printf("最短路径长度为%d,最短路径为:/n",spath[t].length);//print pathYXkHTML5中文学习网 - HTML5先行者学习网

  for(v=0,p=&spath[t];p->pior!=NULL;p=p->pior)YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  pathorder[v]=p-spath;YXkHTML5中文学习网 - HTML5先行者学习网

  v++;YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  pathorder[v]=s;YXkHTML5中文学习网 - HTML5先行者学习网

  for(;v>=0;v--)YXkHTML5中文学习网 - HTML5先行者学习网

  printf("%10s",map.spot[pathorder[v]].name);YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  void main()YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  int menu=1;YXkHTML5中文学习网 - HTML5先行者学习网

  printf(MENU);YXkHTML5中文学习网 - HTML5先行者学习网

  while(menu!=3)YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  printf("/n请输入您的选项(数字)/n");YXkHTML5中文学习网 - HTML5先行者学习网

  fflush(stdin);YXkHTML5中文学习网 - HTML5先行者学习网

  scanf("%d",&menu);YXkHTML5中文学习网 - HTML5先行者学习网

  switch (menu)YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  case 0: loadmap();printf("/n北外地图载入完成/n");break;YXkHTML5中文学习网 - HTML5先行者学习网

  case 1: drawmap();printf("/n新建完成/n");break;YXkHTML5中文学习网 - HTML5先行者学习网

  case 2: shortestpath();printf("/n查询完成完成/n");break;YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  printf("谢谢使用!");YXkHTML5中文学习网 - HTML5先行者学习网

  }YXkHTML5中文学习网 - HTML5先行者学习网

  2. [文件] shortest_path.h ~ 430B 下载(2)YXkHTML5中文学习网 - HTML5先行者学习网

  #ifndef _SHORTEST_PATH_H_YXkHTML5中文学习网 - HTML5先行者学习网

  #define _SHORTEST_PATH_H_YXkHTML5中文学习网 - HTML5先行者学习网

  struct stspot{//景点的顶点YXkHTML5中文学习网 - HTML5先行者学习网

  char name[11];//景点名称no more than 10YXkHTML5中文学习网 - HTML5先行者学习网

  char intro[20];//景点介绍no more than 20YXkHTML5中文学习网 - HTML5先行者学习网

  };YXkHTML5中文学习网 - HTML5先行者学习网

  struct stmap{//整个无向网YXkHTML5中文学习网 - HTML5先行者学习网

  stspot spot[20];//点,景点向量YXkHTML5中文学习网 - HTML5先行者学习网

  int pathmatrix[20][20];//边,路径的邻接矩阵YXkHTML5中文学习网 - HTML5先行者学习网

  int spotnum;YXkHTML5中文学习网 - HTML5先行者学习网

  int pathnum;YXkHTML5中文学习网 - HTML5先行者学习网

  };YXkHTML5中文学习网 - HTML5先行者学习网

  struct stspath//求最短路径时的景点数组YXkHTML5中文学习网 - HTML5先行者学习网

  {YXkHTML5中文学习网 - HTML5先行者学习网

  stspath * pior;YXkHTML5中文学习网 - HTML5先行者学习网

  int in;// can be boolenYXkHTML5中文学习网 - HTML5先行者学习网

  int length;YXkHTML5中文学习网 - HTML5先行者学习网

  };YXkHTML5中文学习网 - HTML5先行者学习网

  #endifYXkHTML5中文学习网 - HTML5先行者学习网

1.jpgYXkHTML5中文学习网 - HTML5先行者学习网

        :更多精彩文章请关注三联编程教程栏目。YXkHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助