数据结构课程设计报告校园导游图Word格式文档下载.docx
- 文档编号:14214725
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:16
- 大小:30.64KB
数据结构课程设计报告校园导游图Word格式文档下载.docx
《数据结构课程设计报告校园导游图Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告校园导游图Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
5.利用迪杰斯特拉算法计算任意两点之间的最短路径。
6.最后用一个主函数main输出各项结果。
四、程序简单说明:
1.创建校园图:
(1)先定义节点个数N,边的最大值(MAXedg),节点(景点名称、景点信息),邻接点,边,顶点向量,当前顶点数和边数。
(2)先给一个节点赋上其相关信息,然后再用p=(Node)malloc(sizeof(edgenode))语句申请下一结点,再给所申请的节点赋上相关信息,直到节点数为N=10为止。
(3)读入道路的起始点,为邻接矩阵的边赋相应的值。
(4)节点和边的相关信息都弄好了后,校园图也就创建好了。
2.利用函数Name给10个节点赋上相应的名称,利用函数Information给各节点添加相应的介绍信息。
3.利用函数travgraph来查找景点信息,要查找景点名称时调用Name函数,要查找景点介绍信息时调用Information函数。
4.手动创建一个校园图creat(Matrix_Graph*G),然后为相应的边赋上真正的值。
5.用path函数来求任意两景点之间的最短路径。
6.用main函数来输出结果:
用switch语句分别输出,要创建校园图时调用creatgraph函数;
查找景点相关信息时调用travgraph函数;
要查找任意两景点之间的最短路径时,先输入你目前所在的位置,再输入你的目的地,最后调用path函数。
五、运行结果:
1.运行结果界面:
2.由于我编写创建校园图的程序时,不会编写打开一个文本的程序,所以创建校园图的运行结果显示的是“打开文本错误”。
3.查找景点相关信息的结果:
4.查找最短路径的结果:
六、心得与体会:
1.了解数据结构在编写比较复杂的程序的重要作用;
2.对数据结构中定义无向图和创建无向图的理解更加深刻;
3.完全理解了迪杰斯特拉算法的原理,但对于其算法的程序编写还是不太明白;
4.学会了在编写几百行程序时如何查找错误,如何改错误,不过改错误时有时候是叫同学改的;
5.了解了vs中的debug功能;
七、程序代码:
#defineN10
#defineMAX20//图中顶点数的最大值
#defineMAXedg30//图中边数的最大值
#include<
stdio.h>
string.h>
stdlib.h>
conio.h>
typedefintAdjMatrix[MAX][MAX];
typedefstruct
{
intvexs[MAX];
AdjMatrixarcs;
}Matrix_Graph;
//图的矩阵表示法。
typedefstructedgenode
intadjvex;
//临接点序号
intlength;
//道路长度
charinfo[10];
//景点名称
charinfo2[100];
//景点详细信息
structedgenode*next;
}edgenode,*Node;
charname[10];
//存储景点的名称.
charinformation[100];
//具体的介绍此景点
structedgenode*link;
//指向下一个景点
}vexnode;
//景点及其信息.
typedefstructEdge
intlengh;
//边的权值,表示路径长度.
intivex,jvex;
//边的两端顶点号
structEdge*next;
//指向下一条边
}EdgeType;
//边及其信息.
typedefstruct
intnum;
//顶点编号。
//顶点名称
}vertex;
vertexvexs[MAX];
//顶点集合
intedges[MAX][MAX];
//临街矩阵
}adjmax;
//adj
FILE*fp;
//文件的读取
voidclrscr()//清屏
system("
cls"
);
}
voidcreatgraph(vexnodeg[],int*n,EdgeTypee[],adjmax*adj)//创建校园图
intb,i,s,d,len;
structedgenode*p,*q;
//定义图的结构体
if((fp=fopen("
file.txt"
"
r"
))==NULL)//打开文件
{
printf("
文件打开错误!
\n"
getchar();
exit(0);
}
fscanf(fp,"
%d%d\n"
n,&
b);
//读入景点个数和边数
for(i=1;
i<
=*n;
i++)//读入景点名称和详细介绍信息
fscanf(fp,"
%s%s\n"
&
g[i].name,&
g[i].information);
strcpy(adj->
vexs[i].name,g[i].name);
g[i].link=NULL;
//初始化
=b;
i++)
{
%d%d%d\n"
e[i].lengh,&
e[i].ivex,&
e[i].jvex);
//读入道路长度和起始点
s=e[i].ivex;
//s是起点,d是终点。
d=e[i].jvex;
len=e[i].lengh;
adj->
edges[s][d]=e[i].lengh;
//为邻接矩阵中相应的边赋值
edges[d][s]=e[i].lengh;
p=(Node)malloc(sizeof(edgenode));
//申请一个弧节点。
p->
next=NULL;
q=(Node)malloc(sizeof(edgenode));
q->
adjvex=d;
//弧p指向的定点
length=len;
strcpy(p->
info,g[d].name);
//为景点赋名称
info2,g[d].information);
//为景点赋介绍信息
adjvex=s;
//弧q指向的定点
strcpy(q->
info,g[s].name);
info2,g[s].information);
next=g[s].link;
//头插法建立邻接表
g[s].link=p;
next=g[d].link;
g[d].link=q;
printf("
校园旅游图已经建立!
getchar();
}
voidName(inti)
switch(i)
case1:
1:
学校正门\n\n"
break;
case2:
2:
主楼广场\n\n"
case3:
3:
图书馆\n\n"
case4:
4:
国际交流中心\n\n"
case5:
5:
宿舍区\n\n"
case6:
6:
二食堂\n\n"
case7:
7:
体育馆\n\n"
case8:
8:
大操场\n\n"
case9:
9:
校医院\n\n"
case10:
10:
大学活动中心\n\n"
default:
景点编号输入错误!
请输入1->
10的数字编号!
\n\n"
break;
}/*Name*/
voidInformation(inti)
{/*景点介绍*/
学校正门:
正门旁边是一条宽敞的马路,交通方便;
进门后直对面就是两栋高大的主楼,气势宏伟。
主楼广场:
广场大致圆形,两边是两栋主楼。
\n\n"
图书馆:
学校信息资源中心,外表呈‘品’字形,两面藏有大量各种书刊,设有电子查阅室和自习室,是学生学习的好地方。
国际交流中心:
一楼餐厅(吃饭不贵而且很卫生),楼上是一些留学生和外教的住所。
还有一些国际研讨会经常在这里开展。
宿舍区:
有一、二、三、四、六、七、九、七个公寓,是大部分学生的住所。
二食堂:
坐落在宿舍区,里面有各个地方的小吃,味道不错,是学生就餐的主要餐厅。
体育馆:
里面有篮球场,羽毛球场,乒乓球桌,是学校举行各项体育活动的主要场所。
大操场:
在体育馆旁边,是学生和老师体育锻炼的主要地方。
校医院:
设备不太齐全,只能治疗一些常见的小病,但是价格很便宜。
\n\n\n"
大学活动中心:
里面有书店、打印和复印的地方、各种学生组织的办公室。
里面还可以举行各项文艺活动。
}/*Inf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 校园 导游