一、实验目的
1.使学生熟悉最短路径算法实现。
2.掌握带权图的存储结构和处理方法。
二、实验环境
1.硬件:每个学生需配备计算机一台。
操作系统:DOS 或 Windows;
2.软件:DOS 或 Windows 操作系统
+Turbo
c;
三、实验要求
1.能够独立完成带权图的存储和最短路
径的生成。
四、实验内容
1.现在假设我国铁路交通图如下(权值
表示距离),请用合适的存储结构将下图存
储到计算机中方便进行处理。
2.现在我想以最小的代价从徐州出发到
达其他目的地,请用 Dijkstra 算法实现我
的要求的路径。
五、代码如下
#include <stdio.h>
#include <malloc.h>
typedef struct{
int *vexs;
int **arcs;
int vexnum;
}ylx_graph ;
typedef struct{
int adjvex;
int lowcost;
}ylx_markedg ;
ylx_graph *ylx_initgraph (){
int i,j;ylx_graph *g;
g=(ylx_graph
*)malloc(sizeof(ylx_graph ));
g->vexnum=25;
g->vexs=(int*)malloc(g->vexnum*sizeof(int))
;
g->arcs=(int**)malloc(g->vexnum*sizeof(int*
));
for(i=0;i<g->vexnum;i++)
g->arcs[i]=(int*)malloc(g->vexnum*sizeof(in
t));
for(i=0;i<g->vexnum;i++)
for(j=0;j<g->vexnum;j++){
g->arcs[i][j]=0;}
return g;
}
void ylx_creategraph (ylx_graph *g){
int i,j;
for(i=0;i<g->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;
评论0
最新资源