- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图的最短路径
一、 实验目的
使学生熟悉最短路径的算法实现
二、 掌握带权图的存储结构和处理方法
硬件:每个学生需配备计算机一台。操作系统:DOS或Windows
软件:DOS或 Windows操作系统+Turbo C;
三、 实验要求
1.能够独立完成带权图的存储和最短路径的生成
四、 实验内容
现在假设我国铁路交通图如下(权值表示距离),请用合适的存储结构将下图存储到计算机中方便进行处 理。
现在我想以最小的代价从徐州出发到达其他目的地,请用Dijkstra算法实现我的要求的路径。
#include stdio.h
#include malloc.h”
typedef struct
(int *vexs;
int **arcs;
int vexnum;
}graph_hc;
typedef struct
(int adjvex;
int lowcost;
}markedg_hc;
graph_hc *initgraph_hc()
(int i,j;graph_hc*g;
g=(graph_hc*)malloc(sizeof(graph_hc));
g-vexnum=25;
g-vexs=(int*)malloc(g-vexnum*sizeof(int));
g-arcs=(int**)malloc(g-vexnum*sizeof(int*));
for(i=0;ig-vexnum;i++)
g-arcs[i]=(int*)malloc(g-vexnum*sizeof(int));
for(i=0;ig-vexnum;i++)
for(j=0;jg-vexnum;j++)
(g-arcs[i][j]=0;}
return g;}
void creategraph_hc(graph_hc *g)
(int i,j;
for(i=0;ig-vexnum;i++)g-vexs[i] =i;
g-arcs[0][9]=1892; g-arcs[1][3]=242;
g-arcs[2][4]=668; g-arcs[2][9]=1145;
g-arcs[3][5]=305; g-arcs[4][6]=137;
g-arcs[4][11]=695; g-arcs[5][6] =704;
g-arcs[5][7]=397; g-arcs[6][12]=674;
g-arcs[8][9]=216; g-arcs[9][10]=676;
g-arcs[10][11]=511;g-arcs[10][13]=842;
g-arcs[11][12]=349;g-arcs[11][14]=534;
g-arcs[12][15]=651;g-arcs[13][16]=110;
g-arcs[13][17] =967;g-arcs[14][18] =409;
g-arcs[15][19]=825;g-arcs[16][17]=639;
g-arcs[17][18]=902;g-arcs[17][21]=607;
g-arcs[18][19] =367;g-arcs[18][21]=672;
g-arcs[18][23]=675;g-arcs[19][20] =622;
g-arcs[21][22] =255;g-arcs[23][24]=140;
for(i=0;ig-vexnum;i++)
for(j=i;jg-vexnum;j++)
if(g-arcs[i][j])
g-arcs[j][i] =g-arcs[i][j];}
void printgraph_hc(graph_hc*g)
{int x,y;
printf(\n城市间连通图为:\n);
for(x=0;xg-vexnum;x++)
for(y=x;yg-vexnum;y++)
if(g-arcs[x][y])printf((%d,%d)距离:%d\t”,x,y,g-arcs[x][y]);}
int selectnearvex_hc(markedg_hc*mark,int *flag,int num)
{int j;
int nearestv;
int lowcost=32767;
for(j=0;j num;j ++)
{if(flag[j] !=1mark[j] .lowcostlowcost)
{nearestv=j;
lowcost=mark[j].lowcost;}}
flag[nearestv]=1;
return nearestv;}
void markothervex_hc(graph_hc*g,markedg_hc*mark,int nearestvjnt num,int*flag)
{int j;
for(j=0;j num;j ++)
{if(g-arcs[neare
文档评论(0)