数据结构交通系统实验报告..docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构交通系统实验报告.

数据结构实验报告2011~2012 学年 第一学期 2009 级 计算机科学与技术 专业班级: 学号: 姓名:实验目的根据数据结构课本图7.33交通图编写交通咨询系统二、实验要求使用邻接表或邻接矩阵的存储结构,根据需要输出从图中任意地点到其他任意地点的最短路径和最短距离。三、实验内容采用邻接矩阵的存储结构,将两个直接相连的城市之间的距离和票价存入矩阵之中(假设只有一种交通方式)。用一维数组存入城市名称。程序最关键部分为查询算法,实验采用迪杰斯拉特算法。迪杰斯拉特算法按路径长度递增的次序,逐步产生最短路径。首先求出长度最短的一条最短路径,然后参照它求出长度次短的一条最短路径,依次类推,直到从顶点v到其它各顶点的最短路径全部求出为止。引入辅助向量s[N],path[N],dist[N]。s中存放已经求出的最短路径的终点,初始化s时使s[i]=0。初始状态时,s中只有一个源点,若源点在一维数组的位置为v,则s[v]=1。以后每求出一条最短路径就将其对应的s的值置为1。当所有的s[i]的值为1时算法结束。Dist[i]用于记载当前找到的从源点v到其它顶点的最短路径长度,它的每个分量dist[i]表示当前所找到的从始点v到每个终点vi的最短路径的长度。它的初态为:若从源点v到vi有弧,则dist[i]为弧上的权值;否则置dist[i]为∞(程序中用最大正数INF代表)。假设已查到最短路径的终点为v0,下次最短路径的终点是vk,则这条路径或者是(v0,vk),或者是(v0,vj,vk)。它的长度或者是从v0到vk的弧上的权值,或者是D[j]和从vj到vk的弧上的权值之和因此,在每次求得一条最短路径之后,将S[vj]置为1,然后修改其dist[k]:dist[ k ] =Min { dist[k], dist[j]+G.arcs[j][k].date(G.arcs[j][k].cost}G.arcs[j][k].date为路径的距离,G.arcs[j[][k].coat为路径的票价。数组path[]保存从源点v到终点vi当前最短路径中的前一个顶点的编号。主程序通过switch语句控制程序执行的功能。程序的功能有:查询最短路径、查询最省钱路径、修改路径信息、删除路径、添加路径、添加站点、删除站点、显示某一城市到其余城市之间的最短路径、输出直接相邻站点的信息。查询功能利用迪杰斯拉特算法实现,修改路径、删除路径、添加路径只需要在邻接矩阵对应位置赋值即可。添加站点:在存储城市名的一维数组G.vers[i].city里存入新的站点名称并相应修改路径信息即可。删除站点:将G.vers[i].city赋值为NULL,并将所有与该站点直接相连的路径信息删除。四、程序源代码迪杰斯拉特算法:voidDijkstra(MGraphG,int v){intdist[N],path[N];int s[N],p[N];intmindis,i,j,u,pre;for(i=0; iN; ++i) {dist[i]=G.arcs[v][i].date; s[i]=0; if (G.arcs[v][i].dateINF) path[i]=v; elsepath[i]=-1; }//fos[v] = 1;path[v] = 0; for(i=0;iN;++i){mindis = INF; u=-1;for(j=0;jN;++j)if(s[j]==0 dist[j]mindis) {u=j;mindis=dist[j];} if (u!=-1) s[u]=1; for(j=0;jN;j++)if(s[j]==0)if(G.arcs[u][j].dateINF dist[u]+G.arcs[u][j].datedist[j]dist[u]=0){dist[j]=dist[u]+G.arcs[u][j].date;path[j]=u;} //if}//if for(i=0;iG.vnum;i++) {if (i!=v){if(strcmp(G.vexs[i].city,)!=0){cout G.vexs[v].city--G.vexs[i].city ;if (s[i]==1dist[i]INFdist[i]0){cout 路径长度为:dist[i] ;pre=i;int k=0;while(pre!=v){p[k]=pre;k++;if(pre==-1){j=0;break;}pre=path[pre];}//whilep[k]=pre;cout路径为:;for(int f=k;f0;f--)coutG.vexs[p[f]].city--;coutG.vexs[

文档评论(0)

stzs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档