数据结构文档格式.docx
- 文档编号:15907843
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:30
- 大小:221.60KB
数据结构文档格式.docx
《数据结构文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;
图的顶点个数及边的个数由分量vexnum、arcnum表示,它们是整型数据。
此外,本系统还设置了三个全局变量:
visited[]数组用于存储顶点是否被访问标志;
d[]数组用于存放边上的权值或存储查找路径顶点的编号;
campus是一个图结构的全局变量。
3.系统功能设计
本系统除了要完成图的初始化功能外还设置了8个子功能菜单。
图的初始化由函数initgraph()实现。
依据读入的图的顶点个数和边的个数,分别初始化图结构中图的顶点向量数组和图的邻接矩阵。
8个子功能的设计描述如下。
(1)学校景点介绍
学校景点介绍由函数browsecompus()实现。
当用户选择该功能,系统即能输出学校全部景点的信息:
包括景点编号、景点名称及景点简介。
(2)查看浏览路线
查看浏览路线由函数shortestpath_dij()实现。
该功能采用迪杰斯特拉(Dijkstra)算法实现。
当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其它景点的最短路径线路及距离。
(3)查看两景点间最短路径
查看两景点间最短路径由函数shortestpath_floyd()实现。
该功能采用弗洛伊德(Floyd)算法实现。
当用户选择该功能,系统能根据用户输入的起始景点及目的地景点编号,查询任意两个景点之间的最短路径线路及距离。
(4)景点信息查询
景点信息查询由函数seeabout()实现。
该功能根据用户输入的景点编号输出该景点的相关信息。
例如,景点编号、名称等。
(5)更改图的信息
更改图的信息功能由主调函数changegraph()及若干个子函数完成,可以实现图的若干基本操作。
例如:
增加新的景点、删除边、重建图等。
(6)查询景点间可行路径
该功能是查询两景点间所有可行路径,由函数allpath()和函数path()实现,其中path()函数是直接递归函数。
由于是无向网,如果网中的边数很多,任意两个景点间的所有路径也会有限多,但很多路径是无实际意义的(有近路,为什么去走远路呢?
)。
所以,本算法在求得的两景点间所有可行路径中,限制只输出路径长度不超过8个景点的路线。
(7)打印邻接矩阵
该功能即输出图的邻接矩阵的值,由函数printmatrix()实现。
(8)退出
即退出校园导游系统,由exit(0)函数实现。
三、模块设计
1.校园抽象图设计
以湖北第二师范学院光谷校区主要景点为例,抽象完成的无向网如图7-7所示。
全校共抽象出28个景点,39条道路。
各景点分别用图中的顶点表示,景点编号从0-27;
39条道路分别用图中的边表示,边上的权值表示景点之间的模拟距离。
图7-7抽象的二师院光谷校区无向带权图
2.模块设计
本程序包含3个模块:
主程序模块、工作区模块和无向网操作模块。
调用关系如图7-8所示。
图7-8模块调用示意图
3.系统子程序及功能设计
本系统共设置18个子程序,各子程序的函数名及功能说明如下。
(1)mgraphinitgraph()//图的初始化
(2)intlocatevex(mgraphc,intv)//查找景点在图中的序号
(3)voidpath(mgraphc,intm,intn,intk)//打印序号为m,n景点间的长度不超过8个景点的路径
(4)intallpath(mgraphc)//打印两景点间的景点个数不超过8的所有路径。
调用(3)
(5)voidshortestpath_dij(mgraphc)//用Dijkstra算法,求一个景点到其他景点间的最短路径,并打印
以下编号(6)-(12)是图的基本操作。
包括:
重建图、更新信息、删除、增加结点和边等。
(6)intcreatgragh(mgraph&
c)//建图。
以图的邻接矩阵存储图
(7)intnewgraph(mgraph&
c) //更新图的部分信息。
返回值:
1
(8)intenarc(mgraph&
c)//增加一条边。
(9)intenvex(mgraph&
c)//增加一个结点。
(10)intdelvex(mgraph&
c)//删除图的一个顶点。
(11)intdelarc(mgraph&
c)//删除图的一条边。
(12)voidprintmatrix(mgraphc)//输出图的邻接矩阵
(13)intchangegraph(mgraph&
c) //图操作的主调函数。
(14)voidshortestpath_floyd(mgraphc)//用Floyd算法求任意两景点间的最短路径,并输出
(15)voidseeabout(mgraphc) //查询景点的信息
(16)voidbrowsecompus(mgraphc) //显示所有景点信息
(17)voidmainwork()//工作区函数。
操作区用户界面
(18)voidmain()//主函数。
设定界面的颜色和大小,调用工作区模块函数
4.函数主要调用关系图
校园导游系统18个子程序之间的主要调用关系如图7-9所示。
图中数字是各函数的编号。
图7-9系统函数调用关系图
四、详细设计
1.数据类型定义
(1)无向带权图(无向网)的定义
typedefstructarcell//边的权值信息
{
intadj;
//权值
}arcell,adjmatrix[MaxVertexNum][MaxVertexNum];
//图的邻接矩阵类型
typedefstructvexsinfo//顶点信息
intposition;
//景点的编号
charname[32];
//景点的名称
charintroduction[256];
//景点的介绍
}vexsinfo;
typedefstructmgraph//图结构信息
vexsinfovexs[MaxVertexNum];
//顶点向量(数组)
adjmatrixarcs;
//邻接矩阵
intvexnum,arcnum;
//分别指定顶点数和边数
}mgraph;
(2)全局变量定义
intvisited[35];
//用于标志顶点是否已经访问过
intd[35];
//用于存放权值或存储路径顶点编号
mgraphcampus;
//图变量(大学校园)
2.系统主要子程序详细设计
(1)主程序模块设计
主函数。
设定用户操作界面的颜色和大小,调用工作区模块函数。
voidmain()
system("
color1f"
);
//屏幕颜色设定
modecon:
cols=140lines=130"
mainwork();
}
(2)用户工作区模块设计
主要工作函数。
操作区用户界面设计。
voidmainwork()
intyourchoice;
campus=initgraph();
printf("
\n-----------------------------------------欢迎使用校园导游程序--------------------------------------------\n"
\n欢迎来到湖北第二师范学院!
\n\n"
\n菜单选择\n\n"
1.学校景点介绍2.查看游览路线\n"
3.查询景点间最短路径4.景点信息查询\n"
5.更改图信息6.查询景点间可行路径\n"
7.打印邻接矩阵8.退出\n"
\n-------------------------------------------------------------------------------------------------------------------\n"
printf("
请输入你的选择:
"
scanf("
%d"
&
yourchoice);
while(!
(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoice==6
||yourchoice==7||yourchoice==8))
{
printf("
输入选择不明确,请重新输入\n"
scanf("
&
}
while
(1)
switch(yourchoice)
{
case1:
cls"
browsecompus(campus);
break;
case2:
shortestpath_dij(campus);
case3:
shortestpath_floyd(campus);
case4:
seeabout(campus);
break;
case5:
changegraph(campus);
case6:
allpath(campus);
break;
case7:
printmatrix(campus);
case8:
exit(0);
break;
default:
}
\n----------------------------------欢迎使用校园导游程序------------------------------------\n"
\n欢迎来到湖北第二师范学院!
3.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构