亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

c++查詢最短路徑示例

2020-01-26 15:31:16
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

//shortest_path.c
#include<stdio.h>
#include<stdlib.h>//用file
#include<string.h>//可用gets(),puts()
#include"shortest_path.h"
#define MAX 32767
#define MENU "歡迎進入導航系統!/n==========菜單===========/n0、載入北外地圖/n1、建立地圖/n2、查詢最短路徑/n3、退出/n==========菜單===========/n"

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讀入成功/n");
 else
  printf("spot讀入失敗/n");

 if(load2()==0)
  printf("path讀入成功/n");
 else
  printf("path讀入失敗/n"); 
}

void drawmap()//直接輸入
{
 int i;
 int a,b;
 char s1[10],s2[10];
 printf("共有幾個景點?(<=20)");//map.spotmun
 fflush(stdin);
 scanf("%d",&map.spotnum);
 printf("共有幾條景點與景點之間直接相連的路徑?");//map.pathnum
 fflush(stdin);//清空鍵盤緩沖區,在"stdio.h"中
 scanf("%d",&map.pathnum);

 for(a=0;a<map.spotnum;a++)//initialize map
  for(b=0;b<map.spotnum;b++)
  {
   if(a==b)map.pathmatrix[a][b]=0;
   else map.pathmatrix[a][b]=MAX;
  }

 for(i=0;i<map.spotnum;i++){
  printf("請輸入第%d個景點的名稱(<=10letters)",i+1);
  fflush(stdin);
  gets(map.spot[i].name);
  printf("請輸入第%d個景點的介紹(<=20letters)",i+1);
  fflush(stdin);
  gets(map.spot[i].intro);
 }//輸入景點名字和簡介map.spot[].name;map.spot[].intro
 for(i=0;i<map.pathnum;i++){
  do{
   printf("請輸入第%d條路徑的起點",i+1);
   fflush(stdin);
   gets(s1);
   for(a=0;a<map.spotnum;a++)
    if(!strcmp(map.spot[a].name,s1))break;//查找景點編號
   if(a==map.spotnum)printf("不存在此景點,請重新輸入。/n");
  }while(a==map.spotnum);
  do{
   printf("請輸入第%d條路徑的終點",i+1);
   fflush(stdin);
   gets(s2);
   for(b=0;b<map.spotnum;b++)
    if(!strcmp(map.spot[b].name,s2))break;
   if(b==map.spotnum)printf("不存在此景點,請重新輸入。/n");
  }while(b==map.spotnum);
  printf("請輸入第%d條路徑的長度",i+1);
  fflush(stdin);
  scanf("%d",&map.pathmatrix[a][b]);
  map.pathmatrix[b][a]=map.pathmatrix[a][b];//輸入路徑長度
 }
}

void shortestpath()//最短路徑,輸入起點終點輸出路徑和路程
{
 struct stspath spath[20];
 int s,t,v,w,min;
 char s1[10],s2[10];
 int pathorder[20];
 struct stspath *p;//pathorder
 do{
  printf("請輸入起點");//查找起點的景點編號
  fflush(stdin);
  gets(s1);
  for(s=0;s<map.spotnum;s++)
   if(!strcmp(map.spot[s].name,s1))break;
  if(s==map.spotnum)printf("不存在此景點,請重新輸入。/n");
 }while(s==map.spotnum); 
 do{
  printf("請輸入終點");//查找終點的景點編號
  fflush(stdin);
  gets(s2);
  for(t=0;t<map.spotnum;t++)
   if(!strcmp(map.spot[t].name,s2))break;
  if(t==map.spotnum)printf("不存在此景點,請重新輸入。/n");
 }while(t==map.spotnum);
 for(v=0;v<map.spotnum;v++)//initialize spath
 {
  spath[v].length=MAX;
  spath[v].in=0;
 }
 spath[s].in=1;
 spath[s].length=0;
 spath[s].pior=NULL;
 v=s;
 while(v!=t){
  for(w=0;w<map.spotnum;w++)
   if((!spath[w].in)&&(spath[w].length>spath[v].length+map.pathmatrix[v][w])){
    spath[w].length=spath[v].length+map.pathmatrix[v][w];
    spath[w].pior=&spath[v];
   }
  min=MAX;
  for(w=0;w<map.spotnum;w++)
   if((!spath[w].in)&&(spath[w].length<min)){
    min=spath[w].length;
    v=w;
   }
  spath[v].in=1;
 }

 printf("最短路徑長度為%d,最短路徑為:/n",spath[t].length);//print path
 for(v=0,p=&spath[t];p->pior!=NULL;p=p->pior)
 {
  pathorder[v]=p-spath;
  v++;
 }
 pathorder[v]=s;
 for(;v>=0;v--)
  printf("%10s",map.spot[pathorder[v]].name);
}

void main()
{
 int menu=1;
 printf(MENU);
 while(menu!=3)
 {
  printf("/n請輸入您的選項(數字)/n");
  fflush(stdin);
  scanf("%d",&menu);
  switch (menu)
  {
  case 0: loadmap();printf("/n北外地圖載入完成/n");break;
  case 1: drawmap();printf("/n新建完成/n");break;
  case 2: shortestpath();printf("/n查詢完成完成/n");break;
  }
 }
 printf("謝謝使用!");
}
2. [文件] shortest_path.h ~ 430B     下載(2)    
#ifndef _SHORTEST_PATH_H_
#define _SHORTEST_PATH_H_

struct stspot{//景點的頂點
 char name[11];//景點名稱no more than 10
 char intro[20];//景點介紹no more than 20
};

struct stmap{//整個無向網
 stspot spot[20];//點,景點向量
 int pathmatrix[20][20];//邊,路徑的鄰接矩陣
 int spotnum;
 int pathnum;
};

struct stspath//求最短路徑時的景點數組
{
 stspath * pior;
 int in;// can be boolen
 int length;
};

#endif



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩一二三在线视频播| 亚洲国产精品va在线观看黑人| 欧美电影免费在线观看| 8x海外华人永久免费日韩内陆视频| 色婷婷综合久久久久中文字幕1| 国产精品中文在线| 国产精品美女在线观看| 亚洲国内精品在线| 日韩免费视频在线观看| 日本中文字幕久久看| 亚洲视频在线播放| 国产一区二区三区精品久久久| 色久欧美在线视频观看| 精品成人av一区| 久久777国产线看观看精品| 91高清免费在线观看| 精品久久久久久久久久久久久| 国内精品一区二区三区| 久青草国产97香蕉在线视频| 国产欧美婷婷中文| 亚洲国产精品久久久久秋霞不卡| 午夜精品久久久久久久久久久久| 久久久久久91香蕉国产| 国产97在线播放| 欧美激情在线观看视频| 国产一区av在线| 欧美不卡视频一区发布| 亚洲精品99久久久久中文字幕| 日韩中文字幕国产| 中文字幕国产精品久久| 亚洲色图18p| 欧美精品一区在线播放| 国产欧洲精品视频| 国产精品一区二区av影院萌芽| 精品久久久久久| 久久久91精品国产一区不卡| 成人情趣片在线观看免费| 日本欧美在线视频| 久久视频国产精品免费视频在线| 亚洲第一色在线| 国产亚洲欧美日韩精品| 久久这里只有精品视频首页| 日韩欧美国产网站| 亚洲欧美日韩一区二区三区在线| 亚洲缚视频在线观看| 日韩中文有码在线视频| 欧美成人午夜视频| 色综合91久久精品中文字幕| 高跟丝袜欧美一区| 国内精品小视频| 亚洲精品日韩丝袜精品| 97国产在线视频| 国产精品国产三级国产aⅴ9色| 亚洲成人中文字幕| 2021久久精品国产99国产精品| 国产精品国产自产拍高清av水多| 国产精品av免费在线观看| 国产精品视频区| 亚洲摸下面视频| 欧美日本啪啪无遮挡网站| 国产日韩换脸av一区在线观看| 91精品国产九九九久久久亚洲| 一夜七次郎国产精品亚洲| 国外成人免费在线播放| 亚洲第一福利在线观看| 欧美怡红院视频一区二区三区| 欧美视频一二三| 久久久噜噜噜久久久| 亚洲国产精品va在看黑人| 日本精品视频网站| 中国人与牲禽动交精品| 欧美香蕉大胸在线视频观看| 国产精品对白刺激| 丝袜美腿精品国产二区| 久久偷看各类女兵18女厕嘘嘘| 国产91精品久久久久久| 亚洲区一区二区| 亚洲欧美中文字幕在线一区| 国产精品自在线| 亚洲伊人久久大香线蕉av| 久久伊人免费视频| 色噜噜亚洲精品中文字幕| 国产91色在线免费| 中文字幕无线精品亚洲乱码一区| 欧美日韩一区二区三区在线免费观看| 久久亚洲精品一区| 精品动漫一区二区三区| 中文字幕精品在线视频| 这里只有精品在线播放| 欧美在线免费看| 美女精品视频一区| 日本久久久a级免费| 亚洲国产日韩欧美在线图片| 亚洲激情国产精品| 亚洲韩国青草视频| 亚洲精品乱码久久久久久金桔影视| 成人性教育视频在线观看| 久久国产精品久久久久久久久久| 成人欧美一区二区三区黑人孕妇| 日韩hd视频在线观看| 国产精品大片wwwwww| 久久久久成人网| 国产精品一区二区av影院萌芽| 亚洲精品电影网| 亚洲欧美制服丝袜| 久久人人爽国产| 国产亚洲一区二区在线| 亚洲午夜未满十八勿入免费观看全集| 日本国产精品视频| 欧美激情一区二区三区高清视频| 日韩欧美视频一区二区三区| 久久亚洲精品一区| 久久久久久免费精品| 亚洲午夜国产成人av电影男同| 亚洲精品www久久久| 宅男66日本亚洲欧美视频| 精品福利樱桃av导航| 国产偷亚洲偷欧美偷精品| 国产精品日韩欧美大师| 国产精品999999| 久久久免费高清电视剧观看| 国产欧美一区二区白浆黑人| 欧美高跟鞋交xxxxxhd| 正在播放欧美一区| 国产欧美日韩免费看aⅴ视频| 亚洲美女自拍视频| 精品久久久久久中文字幕大豆网| 97视频色精品| 亚洲韩国日本中文字幕| 亚洲欧美日韩精品久久亚洲区| 日韩在线观看网址| 91久久精品美女高潮| 国产精品羞羞答答| 国产欧美日韩视频| 最新69国产成人精品视频免费| 日韩欧美成人精品| 欧美亚洲日本网站| 福利视频一区二区| 欧美大秀在线观看| 国产91露脸中文字幕在线| 伊人久久久久久久久久久久久| 欧美日韩精品国产| 97精品国产97久久久久久| 亚洲男人的天堂在线播放| 成人免费网站在线| 国产精品久久97| 91深夜福利视频| 中文字幕亚洲激情| 欧美成人精品在线观看| 国产精品成人品| 欧美夜福利tv在线| 日韩av影视在线| 91视频88av| 主播福利视频一区| 日本久久精品视频| 91免费看片网站| 国色天香2019中文字幕在线观看| 一区二区在线免费视频| 亚洲xxxx18| 亚洲图片欧洲图片av| 97在线视频一区| 91精品久久久久久久久不口人| 日韩中文字幕亚洲| 欧美成人免费全部观看天天性色|