数据结构课程设计校园导航文档格式.docx

上传人:b****1 文档编号:13552000 上传时间:2022-10-11 格式:DOCX 页数:30 大小:106.45KB
下载 相关 举报
数据结构课程设计校园导航文档格式.docx_第1页
第1页 / 共30页
数据结构课程设计校园导航文档格式.docx_第2页
第2页 / 共30页
数据结构课程设计校园导航文档格式.docx_第3页
第3页 / 共30页
数据结构课程设计校园导航文档格式.docx_第4页
第4页 / 共30页
数据结构课程设计校园导航文档格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

数据结构课程设计校园导航文档格式.docx

《数据结构课程设计校园导航文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计校园导航文档格式.docx(30页珍藏版)》请在冰豆网上搜索。

数据结构课程设计校园导航文档格式.docx

第三点就是设计各个功能得实现,学校景点得介绍通过函数browsepus()来实现;

查询景点间得最段路径通过Floyd(弗洛伊德)算法实现;

查询景点间得所有路径通过allpath函数与path函数来实现;

更改图得信息可以由主函数changegraph以及其她函数可以实现。

3.详细设计

(1)主要得操作界面得显示以及无向网操作

void initgraph(graph *ga)

{   

int i,j;

ﻩga—>

n=9;

ga—>

e=11;

for(i=0;

i〈ga—>

n;

i++)

 {

ga->

vexs[i]、num=i;

}

  strcpy(ga-〉vexs[0]、name,”西门”);

ﻩﻩstrcpy(ga->vexs[0]、introduce,"学校得正大门,设有公交站”);

ﻩﻩstrcpy(ga-〉vexs[1]、name,"

风雨篮球场"

);

ﻩﻩstrcpy(ga-〉vexs[1]、introduce,”"

strcpy(ga->

vexs[2]、name,”田径场");

ﻩﻩstrcpy(ga->vexs[2]、introduce,”举办运动会,平时体育跑步锻炼等”);

ﻩstrcpy(ga—〉vexs[3]、name,"

京元食堂”);

ﻩﻩstrcpy(ga->vexs[3]、introduce,"

新食堂");

strcpy(ga—>

vexs[4]、name,”苍霞湖畔”);

ﻩstrcpy(ga—〉vexs[4]、introduce,”戏称“分手湖”,景色宜人”);

strcpy(ga—〉vexs[5]、name,"思源楼");

ﻩstrcpy(ga->

vexs[5]、introduce,”学校王牌土木得教学区"

ﻩstrcpy(ga-〉vexs[6]、name,”图书馆"

ﻩﻩstrcpy(ga->vexs[6]、introduce,"

就是大学城最高得标志性建筑");

ﻩstrcpy(ga—〉vexs[7]、name,"

北教区");

ﻩstrcpy(ga—〉vexs[7]、introduce,"

北校区集中得教学楼");

ﻩstrcpy(ga-〉vexs[8]、name,”禾堂餐厅");

ﻩstrcpy(ga->

vexs[8]、introduce,"旧食堂”);

 for(i=0;

i<

ga—〉n;

i++)

for(j=0;

j<

ga->

j++)

ga->

edges[i][j]=1000;

ﻩﻩga—〉edges[0][1]=1;

ﻩga->edges[1][2]=2;

ﻩga->

edges[1][3]=5;

ga—〉edges[2][4]=4;

ﻩga—〉edges[3][4]=9;

ﻩﻩga-〉edges[4][5]=1;

ﻩga—〉edges[4][8]=1;

ﻩﻩga->edges[5][6]=5;

ga->edges[5][7]=7;

ﻩﻩga->

edges[7][8]=1;

ﻩga—>edges[6][7]=9;

  for(i=0;

i<ga-〉n;

ﻩfor(j=0;

j<ga-〉n;

ﻩga—〉edges[j][i]=ga-〉edges[i][j];

(2)确定顶点就是否存在已经顶点就是否已经被访问过来确定路径

void Create_graph(graph*ga)

ﻩinti,j,k,w;

ﻩprintf("

请输入顶点数与边数:

\n");

ﻩscanf(”%d%d"

&(ga-〉n),&(ga-〉e));

ﻩprintf(”请输入景点编号,景点名字,景点介绍,建立信息表:

\n");

ﻩfor(i=0;

ga—>

n;

ﻩscanf(”%d"

&(ga—>vexs[i]、num));

ﻩ  gets(ga—〉vexs[i]、name);

ﻩﻩgets(ga—〉vexs[i]、introduce);

ﻩfor(i=0;

i〈ga-〉n;

for(j=0;

j<

=ga-〉n;

j++)

ﻩga—〉edges[i][j]=1000;

for(k=0;

k〈ga—〉e;

k++)

ﻩ{

ﻩprintf("

请输入%d条边得景点序号i,j与长度:

"

k+1);

ﻩﻩscanf(”%d %d%d”,&i,&j,&

w);

  ga->

edges[i][j]=w;

ﻩga->

edges[j][i]=w;

ﻩ}

voidprint(graphga)

inti,j;

 for(i=0;

i〈ga、n;

i++)

ﻩ for(j=0;

ga、n;

ﻩ {

printf("%d",ga、edges[i][j]);

     if(j+1==ga、n)

ﻩ printf("\n"

ﻩ  }

voidvisit(graphga)

{  

ﻩint a;

printf("

请输入景点编号:

”);

scanf("%d”,&a);

  int i;

ﻩfor(i=0;

i<

ga、n;

   {

ﻩif(a==ga、vexs[i]、num)

ﻩ{

printf("景点编号为%d\n",ga、vexs[i]、num);

 printf("景点名称为”);

ﻩputs(ga、vexs[i]、name);

 printf("

景点介绍为");

ﻩ puts(ga、vexs[i]、introduce);

ﻩbreak;

ﻩ}

 }

if(i==ga、n)printf(”无此点\n”);

}

(3)得出景点间得最短路径

voidshortestpath_djst(graphga){

void shortestpath_floyd(graphga)

inti,j,k,v,u,w,d[35][35],p[35][35][35];

ﻩfor(v=0;

v<

ga、n;

v++)

{

for(w=0;

w<

w++)

ﻩ{

d[v][w]=ga、edges[v][w];

ﻩfor(u=0;

u〈ga、n;

u++)

ﻩﻩ{

ﻩp[v][w][u]=0;

ﻩﻩ}

ﻩﻩif(d[v][w]<1000)

ﻩ{

ﻩp[v][w][v]=1;

ﻩp[v][w][w]=1;

ﻩ}

ﻩ}

 for(u=0;

u++)

ﻩﻩfor(v=0;

v〈ga、n;

v++)

ﻩﻩfor(w=0;

ga、n;

w++)

ﻩﻩif(d[v][u]+d[u][w]<

d[v][w])

ﻩﻩﻩ{

ﻩﻩd[v][w]=d[v][u]+d[u][w];

ﻩﻩfor(i=0;

i<ga、n;

ﻩﻩp[v][w][i]=p[v][u][i]||p[u][w][i];

ﻩﻩﻩ}

ﻩprintf("

\n请输入出发点与目得地编号:

scanf("%d%d"

,&k,&

j);

printf("\n\n"

ﻩwhile(k<0||k〉ga、n||j<0||j>

ga、n)

  printf("

\n输入得编号不存在"

 printf("\n请重新输入编号:

\n\n");

scanf("

%d%d”,&k,&

printf("

\n\n");

%s",ga、vexs[k]、name);

ﻩfor(u=0;

u<

ga、n;

u++)

if(p[k][j][u]&&

k!

=u&

&

j!

=u)

ﻩprintf(”——->

%s”,ga、vexs[u]、name);

printf(”--->

%s",ga、vexs[j]、name);

ﻩprintf("\n\n\n总长度为%d千米\n\n\n"

d[k][j]);

(4)得到景点之间得所有路径

voidpath(graphc,intm,int n,intk){

ﻩ ints,x=0;

ﻩ int t;

  t=k+1;

ﻩif(d[k]==n&&

k<

8)

{ 

ﻩﻩfor(s=0;

s<

k;

s++)

ﻩﻩ {

ﻩ printf(”%s-—-〉",c、vexs[d[s]]、name);

  }

ﻩ printf("%s\n\n”,c、vexs[d[s]]、name);

ﻩ  }

  else

ﻩ {

ﻩﻩs=0;

  while(s〈c、n)

ﻩﻩif((c、edges[d[k]][s]〈1000)&&(visited[s]==0))

ﻩﻩ {

ﻩﻩﻩ  visited[s]=1;

ﻩﻩﻩ d[k+1]=s;

ﻩﻩpath(c,m,n,t);

ﻩﻩﻩvisited[s]=0;

ﻩﻩ}

ﻩﻩ s++;

ﻩ}

  }

 }

voidallpath(graphc)

{

intk,i,j,m,n;

ﻩ printf("\n\n请输入您要查询得两个景点得编号:

\n\n"

);

 scanf("

%d%d”,&

i,&

j);

ﻩprintf("

\n\n");

ﻩ m=locatevex(c,i);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1