- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]数据结构课设报告
《中南大学信息科学与工程学院》
课程设计报告
专 业: 电子信息工程
班 级: 1002
姓 名: 程广俊
学 号: 0909101116
指导教师: 李登
完成日期: 2012年7月
目录
1、问题描述 2
2、基本要求 2
2.1.1 2
2.1.2 2
2.1.3 2
2.1.4 2
2.1.5 2
2.2 2
3、数据结构的设计 3
3.1路线查找和选择 3
3.2程序的编写 6
4、软件模块结构 8
5、程序设计思想 8
6、程序流程图 9
7、源程序 10
8、调试分析 27
9、测试数据 27
10、用户使用手册 28
11、心得体会 30
11.1经验体会 30
11.2这次的课程设计让我体会到了三点: 30
11.3编程体会 30
1、问题描述
已知某市每条公共路线及沿途所经站名,试设计一个问路程序,用户可以在任一车站通过终端询问知道:
是否有公共汽车到达指定的目的地?
若有,告诉乘车路线。如需中途换车,应指示再那里换车 数据结构:将公共汽车路线图看成是一个有向图,选择合适的数据结构,除了反映顶点(站)之间的邻接关系外,还应反映途经的路线号。注意,两站之间可能存在往返两个方向,每个方向又可能对应多个路线号。
算法:按选定的数据结构设计相应的算法。注意,当从乘车站到目的站存在多种乘车路线时,必须确定路线选取标准。例如,要求换车次数最少等。
数据结构可以采用链接结构:
structNODE
{
char* stname;
struct NODE* link;
};
struct NODE hdtp[MAX+1];
数据结构也可以采用顺序结构:
struct NODE{
int go,back;
};
struct NODE a[max+1,max+1];
其中,a[I,j].go0 表示第i条线路上,向站j 去方向的下一站号;a[i,j].back0表示第i条线路上,站j回来的下一站号。若站j不在第i条线路上,a[i,j].go 和a[i,j].back 均为0。
另外,还需建立两个数组;一个是线路序号和线路号“值”的对照表;另一个是站号和站名对照表。
对所采用的算法进行算法分析
假定顶点编号为1..n,数据结构采用连接结构。设置表头数组为head[1..n],head[i]包含站i的名字和一指针,该指针指向i的所有邻接顶点组成的单链表。单链表中的每个结点包含3个域:一个站号域,两个指针域。一个指针指向i的下一个邻接顶点,另一个指针指向从i到该结点的所有线路号组成的链表。
struct LINENODE
{
int lineno;
struct LINENODE* next;
};
struct STNODE
{
int stno;
struct LINENODE* Link1,*Link2;
};
如果按途经站数最少的原则来确定乘车路线,实际上是最短路径问题,则可以采用Djkstra算法或图的宽度优先搜索算法。在保证站数最少的前提下,如果存在多种乘车路线,则可以进一步挑选换车次数最少的路线。
公交线路图
3.2程序的编写
3.2.1站点信息的初始化和赋值
根据所查找的路径图,对各公交站点进行初始化信息并用二维数组对其边的权值进行初始化,用CreateUDN构建站点信息以及站点间的无向图。
3.2.2定义一个最短路径函数
利用dijikstra算法定义一个最短路径函数,可以查找最短路径问题
3.2.3定义一个一次换乘最优路径函数
在两站间有直达车或者一次换乘时,可以不考虑最短路径而输出一次换乘最优方案,这样考虑到乘客的实际情况而额外加的功能。
3.2.4输出函数
void output(int site1,int site2)输出最短路径函数的定义
3.3.5主函数的编写
void main()
{
int v0,v1,n;
char c;
CreateUDN(Len);
for(;;)
{
lable:;
narrate();
printf(\n\n要退出程序请按:【Ctrl+Pause Break】\n);
printf(请选择起点的公交站(0~43):);
scanf(%d,v0);
if(v00||v0Len-1)
文档评论(0)