数据结构与算法课程设计报告-图的算法实现(编辑修改稿)内容摘要:

if(vf1!=vf2) { front[vf2]=vf1。 printf((%c%c)\n,edges[i].w1,edges[i].w2)。 } } } 3主函数 void main() { int a,i。 printf(\t\t*************图的实现算法 *****************\n)。 printf(\t\t****************************************\n\n)。 printf(\t\t\t1:建立图的邻接矩阵 \n\n)。 printf(\t\t\t2:用 prim 算法生成的最小生成树为: \n\n)。 printf(\t\t\t3:用 Dijkstra 生成的最短路径 \n\n)。 printf(\t\t\t4:用 Kruskal 算法生成的最小生成树为: \n\n)。 printf(\t\t\t5:返回 \n\n)。 printf(\t\t****************************************\n)。 printf(\t\t****************************************\n)。 printf(\n\t\t输入一个有效的数字 ,选择你要做的操作 :\n)。 system(color A)。 /*改变界面颜色的,对程序没什么 影响 */ scanf(%d,amp。 a)。 switch(a) { case 1: system(cls)。 printf(输入数据建立无向图的邻接矩阵 )。 getin_1()。 printf(数据保存成功。 \n)。 /*flag_1=1。 Undigraph()。 */ main()。 break。 case 2: getout_1()。 outmatrix()。 MiniSpanTree_PRIM([0])。 //用 prim 算法求最小生成树 main()。 break。 case 3: getout_1()。 outmatrix()。 printf(\n 采用 Dijkstra 算法得到的最短路径为: \n)。 for(i=0。 i。 i++) Dijkstra(i)。 printf(\n)。 main()。 break。 case 5: main()。 case 4: getout_1()。 outmatrix()。 printf(\n)。 edgetype edgex[1000]。 int p,q,c=0。 for(p=0。 p。 p++) for(q=p+1。 q=。 q++) { edgex[c++].Cost=[p][q]。 edgex[c].w1=[p]。 edgex[c++].w2=[q]。 } Kruskal(edgex,)。 main()。 break。 } } 功能调试 主界面 建立图的信息 用普利姆算法生成最小生成树 用狄克斯特拉算法生成最短路径 用克鲁斯卡尔算法生成最小生成树 返回 程序源代码 include include define N 9999 typedef int elemtype。 typedef struct { elemtype w1。 elemtype w2。 int Cost。 }edgetype。 typedef struct { char vexs[N]。 int edges[N][N]。 int n,e。 //顶点数和边数 }MGraph。 MGraph g。 typedef struct { char adjvex。 int lowcost。 }minside。 // 若 G中存在顶点 u,则返回该顶点在图中位置。 否则返回 1。 int LocateVex(char u) { int i。 for(i = 0。 i。 ++i) if( u==[i]) return i。 else return 1。 } // 求 的最小正值 int minimum(minside SZ[]) { int i=0,j,k,min。 while(SZ[i].lowcost==0) i++。 min=SZ[i].lowcost。 //第一个不为 0的值 k=i。 for(j=i+1。 j。 j++) if(SZ[j].lowcost0) if(minSZ[j].lowcost) { min=SZ[j].lowcost。 k=j。 } return k。 } //用 prim 算法从第 u 个顶点出发构造网 G的最小生成树 T,输出 T的各条边 void MiniSpanTree_PRIM(char u) { int i,j,k。 minside closedge[9999]。 k=LocateVex(u)。 for(j=0。 j。 ++j) //辅助数组初始化 { if(j!=k) { closedge[j].adjvex=u。 closedge[j].lowcost=[k。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。