2015年大二上-数据结构-图-2-(3)-Dijkstra算法
来源:互联网 发布:mac搜狗输入法不能用 编辑:程序博客网 时间:2024/05/20 20:18
/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:Annpion.cpp*作者:王耀鹏*完成日期:2016年3月2日*版本号:v1.0**问题描述:Dijkstra算法*输入描述:图*输出描述:Dijkstra算法*/#include<stdio.h>#include<malloc.h>#include "Graph.h"#define MaxSize 100void Ppath(int path[],int i,int v) //前向递归查找路径上的顶点{ int k; k=path[i]; if(k==v) return ; Ppath(path,k,v); printf("%d,",k);}void Dispath(int dist[],int path[],int s[],int n,int v){ for(int i=0;i<n;++i) { if(s[i]==1) { printf(" 从%d到%d的最短路径长度为:%d\t路径为:",v,i,dist[i]); printf("%d,",v); Ppath(path,i,v); printf("%d\n",i); } else printf("从%d到%d不存在路径\n",v,i); }}void Dijkstra(MGraph g,int v){ int dist[MAXV],path[MAXV],s[MAXV],mindis,i,j,u; for(i=0;i<g.n;++i) { dist[i]=g.edges[v][i]; //距离初始化 s[i]=0; //s[]置空 if(g.edges[v][i]<INF) //路径初始化 path[i]=v; else path[i]=-1; } s[v]=1; path[v]=0; for(i=0;i<g.n;++i) //循环直到所有顶点的最短路径都求出 { mindis=INF; for(j=0;j<g.n;++j) if(s[j]==0 && dist[j]<mindis) { u=j; mindis=dist[j]; } s[u]=1; for(j=0;j<g.n;++j) { if(s[j]==0) { if(g.edges[u][j]<INF && dist[u]+g.edges[u][j]<dist[j]) { dist[j]=dist[u]+g.edges[u][j]; path[j]=u; } } } } Dispath(dist,path,s,g.n,v); //输出最短路径}int main(){ MGraph g; int A[7][7]= { {0,4,6,6,INF,INF,INF}, {INF,0,1,INF,7,INF,INF}, {INF,INF,0,INF,6,4,INF}, {INF,INF,2,0,INF,5,INF}, {INF,INF,INF,INF,0,INF,6}, {INF,INF,INF,INF,1,0,8}, {INF,INF,INF,INF,INF,INF,0} }; ArrayToMat(A[0], 7, g); Dijkstra(g,0); return 0;}
附:测试用图结构
运行结果:
0 0
- 2015年大二上-数据结构-图-2-(3)-Dijkstra算法
- 2015年大二上-数据结构-图-2-(2)-Kruskal算法
- 2015年大二上-数据结构-图-2-(1)-Prim算法
- 2015年大二上-数据结构-图-2-(4)-Floyd算法
- 2015年大二上-数据结构-链表(3)-单链表算法
- 2015年大二上-数据结构-图-1-(3)图遍历算法实现
- 2015年大二上-数据结构-图-2-(5)-拓扑排序
- 2015年大二上-数据结构-图-1-(1)图基本算法库
- 2015年大二上-数据结构-串(3)- 顺序串算法
- 2015年大二上-数据结构-链表(2)- 建设“单链表”算法库
- 2015年大二上-数据结构-栈(2)-链栈算法库
- 2015年大二上-数据结构-队列(2)- 链队算法库
- 2015年大二上-数据结构-串(2)- 链串算法库
- 2015年大二上-数据结构-查找-1-(3)-二叉排序树
- 2015年大二上-数据结构-内部排序-(3)-冒泡排序
- 2015年大二上-数据结构-顺序表(2)-奇右偶左
- 2015年大二上-数据结构-查找-1-(2)-分块查找
- 2015年大二上-数据结构-查找-2-(1)-HashTable
- appleScript初涉实现邮件发送初涉实现邮件发送
- EditText属性整理
- 新建从网页拷贝代码的python文件保存不了的解决方案
- Linux shell script
- 【积水成渊-逐步定制自己的Emacs神器】4:Emacs自动补全
- 2015年大二上-数据结构-图-2-(3)-Dijkstra算法
- 关于类已经定义了的原因
- PHP旧代码迁移
- 字节流与字符流的区别
- win7_oracle11g_64位连接32位PLSQL_Developer
- getmail: refuse to deliver mail as root
- eclipse打开文件位置插件
- vs2008 MFC程序 读取显示图像、更改背景图像
- Java基础知识一