数据结构课程设计校园导航Word下载.docx

上传人:b****1 文档编号:1506478 上传时间:2023-04-30 格式:DOCX 页数:30 大小:21.49KB
下载 相关 举报
数据结构课程设计校园导航Word下载.docx_第1页
第1页 / 共30页
数据结构课程设计校园导航Word下载.docx_第2页
第2页 / 共30页
数据结构课程设计校园导航Word下载.docx_第3页
第3页 / 共30页
数据结构课程设计校园导航Word下载.docx_第4页
第4页 / 共30页
数据结构课程设计校园导航Word下载.docx_第5页
第5页 / 共30页
数据结构课程设计校园导航Word下载.docx_第6页
第6页 / 共30页
数据结构课程设计校园导航Word下载.docx_第7页
第7页 / 共30页
数据结构课程设计校园导航Word下载.docx_第8页
第8页 / 共30页
数据结构课程设计校园导航Word下载.docx_第9页
第9页 / 共30页
数据结构课程设计校园导航Word下载.docx_第10页
第10页 / 共30页
数据结构课程设计校园导航Word下载.docx_第11页
第11页 / 共30页
数据结构课程设计校园导航Word下载.docx_第12页
第12页 / 共30页
数据结构课程设计校园导航Word下载.docx_第13页
第13页 / 共30页
数据结构课程设计校园导航Word下载.docx_第14页
第14页 / 共30页
数据结构课程设计校园导航Word下载.docx_第15页
第15页 / 共30页
数据结构课程设计校园导航Word下载.docx_第16页
第16页 / 共30页
数据结构课程设计校园导航Word下载.docx_第17页
第17页 / 共30页
数据结构课程设计校园导航Word下载.docx_第18页
第18页 / 共30页
数据结构课程设计校园导航Word下载.docx_第19页
第19页 / 共30页
数据结构课程设计校园导航Word下载.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计校园导航Word下载.docx

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

数据结构课程设计校园导航Word下载.docx

3.详细设计

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

voidinitgraph(graph*ga)

{

inti,j;

ga->

n=9;

e=11;

for(i=0;

i<

ga->

n;

i++)

{

vexs[i].num=i;

}

strcpy(ga->

vexs[0].name,"

西门"

);

strcpy(ga->

vexs[0].introduce,"

学校的正大门,设有公交站"

vexs[1].name,"

风雨篮球场"

vexs[1].introduce,"

"

vexs[2].name,"

田径场"

vexs[2].introduce,"

举办运动会,平时体育跑步锻炼等"

vexs[3].name,"

京元食堂"

vexs[3].introduce,"

新食堂"

vexs[4].name,"

苍霞湖畔"

vexs[4].introduce,"

戏称“分手湖”,景色宜人"

vexs[5].name,"

思源楼"

vexs[5].introduce,"

学校王牌土木的教学区"

vexs[6].name,"

图书馆"

vexs[6].introduce,"

是大学城最高的标志性建筑"

vexs[7].name,"

北教区"

vexs[7].introduce,"

北校区集中的教学楼"

vexs[8].name,"

禾堂餐厅"

vexs[8].introduce,"

旧食堂"

for(i=0;

for(j=0;

j<

j++)

ga->

edges[i][j]=1000;

ga->

edges[0][1]=1;

edges[1][2]=2;

edges[1][3]=5;

edges[2][4]=4;

edges[3][4]=9;

edges[4][5]=1;

edges[4][8]=1;

edges[5][6]=5;

edges[5][7]=7;

edges[7][8]=1;

edges[6][7]=9;

edges[j][i]=ga->

edges[i][j];

}

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

voidCreate_graph(graph*ga)

{

inti,j,k,w;

printf("

请输入顶点数和边数:

\n"

scanf("

%d%d"

&

(ga->

n),&

e));

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

scanf("

%d"

vexs[i].num));

gets(ga->

vexs[i].name);

gets(ga->

vexs[i].introduce);

for(i=0;

for(j=0;

=ga->

ga->

for(k=0;

k<

e;

k++)

printf("

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

k+1);

%d%d%d"

i,&

j,&

w);

edges[i][j]=w;

edges[j][i]=w;

voidprint(graphga)

ga.n;

for(j=0;

ga.edges[i][j]);

if(j+1==ga.n)

printf("

voidvisit(graphga)

inta;

请输入景点编号:

a);

inti;

if(a==ga.vexs[i].num)

景点编号为%d\n"

ga.vexs[i].num);

景点名称为"

puts(ga.vexs[i].name);

景点介绍为"

puts(ga.vexs[i].introduce);

break;

if(i==ga.n)printf("

无此点\n"

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

voidshortestpath_djst(graphga){

voidshortestpath_floyd(graphga)

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

for(v=0;

v<

v++)

for(w=0;

w<

w++)

{

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

for(u=0;

u<

u++)

{

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

}

if(d[v][w]<

1000)

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

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

}

for(u=0;

for(v=0;

for(w=0;

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

d[v][w])

{

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

for(i=0;

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

}

\n请输入出发点和目的地编号:

k,&

j);

\n\n"

while(k<

0||k>

ga.n||j<

0||j>

ga.n)

\n输入的编号不存在"

\n请重新输入编号:

%s"

ga.vexs[k].name);

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

&

k!

=u&

j!

=u)

--->

ga.vexs[u].name);

ga.vexs[j].name);

\n\n\n总长度为%d千米\n\n\n"

d[k][j]);

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

voidpath(graphc,intm,intn,intk){

ints,x=0;

intt;

t=k+1;

if(d[k]==n&

k<

8)

{

for(s=0;

s<

k;

s++)

%s--->

c.vexs[d[s]].name);

%s\n\n"

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;

\n\n请输入您要查询的两个景点的编号:

m=locatevex(c,i);

n=locatevex(c,j);

d[0]=m;

c.n;

visited[k]=0;

visited[m]=1;

path(c,m,n,0);

(5)删除边

intdelarc(graph&

ga){

intm,n,v0,v1;

if(ga.e<

=0)

图中已经无顶边,无法删除"

return1;

\n请输入要删除的边的起点和终点的编号:

v0,&

v1);

m=locatevex(ga,v0);

if(m<

0)

此顶点%d已删除"

v0);

n=locatevex(ga,v1);

if(n<

v1);

ga.edges[m][n]=1000;

ga.edges[n][m]=1000;

ga.e--;

intenarc(graph&

ga)

intm,n,distance;

请输入边的起点和终点编号,权值:

m,&

n,&

distance);

while(m<

0||m>

ga.n||n<

0||n>

输入错误,请重新输入:

n);

if(locatevex(ga,m)<

此节点%d已经删除"

m);

return1;

if(locatevex(ga,n)<

n);

ga.edges[m][n]=distance;

ga.edges[n][m]=ga.edges[m][n];

return1;

4.调试分析

  内容包括:

  a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;

  b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和

  改进设想;

  c.经验和体会等。

5.用户使用说明

通过主菜单提示,选择出你所想要知道的信息,然后通过输入节点来代替景点,从而得到景点间的所有路径,最短路径等其他信息。

6.测试结果

(1)操作的主界面

(2)学校景点的介绍

(3)学校景点从西门的禾堂餐厅的所有路径所有路径

(4)学校景点从西门的禾堂餐厅的所有路径最短路径

(5)图的更改的界面

(6)边的删除界面展示

7.附录

#defineMAX100//数据类型的定义

#include<

string>

iostream>

usingnamespacestd;

intvisited[35];

intd[35];

structviews{

intnum;

charname[10];

charintroduce[100];

};

typedefviewsdatatype;

typedefstruct{

datatypevexs[MAX];

intedges[MAX][MAX];

intn,e;

}graph;

voidinitgraph(graph*ga)//主要的操作界面的显示以及无向网操作

intlocatevex(graphga,intv)//查找景点在图中的序号

if(v==ga.vexs[i].num)returni;

return-1;

voidshortestpath_djst(graphga)

voidpath(graphc,intm,intn,intk)

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2