下载此文档

C dijkstra算法 最短路径 迪杰斯特拉.docx


文档分类:办公文档 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
#include <> //最短路径的输出部分参照的是曲文的
#include <>
#include ""
#define Max_num 40
#define Longest 100000
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OK 1
ifstream Input("");
typedef int Status;
typedef struct{
int num;
char name[50];
char info[100];
}VertexType;
typedef struct{
VertexType vexs[Max_num]; //顶点向量
int arcs[Max_num][Max_num];
int vexnum,um; //邻接矩阵
}AMGraph;
Status CreateGraph(AMGraph *G,int n, int m){ //构造图,n为顶点数目,m为边数
int i,j,k,f,w,a,b;
VertexType v1,v2;
for(i=1;i<=n;i++){ //输入顶点信息
G->vexs[i].num=i;
Input>>G->vexs[i].name>>G->vexs[i].info;
}
for(i=1;i<=n;i++) //初始化邻接矩阵
for(j=1;j<=n;j++)
G->arcs[i][j]=Longest;
for(k=0;k<m;k++){ //从文件读入边的信息
Input>>>>>>w;
for(f=1;f<=n;f++)
if(strcmp(,G->vexs[f].name)==0)
a=G->vexs[f].num;
for(f=1;f<=n;f++)
if(strcmp(,G->vexs[f].name)==0)
b=G->vexs[f].num;
G->arcs[a][b]=w;
G->arcs[b][a]=G->arcs[a][b];
}
return OK;
}
void viewschool(AMGraph *G)
{
int m;
cout<<"请输入要查询的景点代号:";
cin>>m;
cout<<endl;
cout<<G->vexs[m].name<<G->vexs[m].info<<endl;
}
void Dijkstra(AMGraph *G,int v1 ,int v2,int n)//用Dijkstra算法求有向图G的v1顶点到其他顶点v的最短路径Path[v]及其距离Dist[v]
//S[v]为真当且仅当v属于S,即已求得从vl到v的最短路径
{
int Path[Max_num];
int S[Max_num];
int D[Longest];
int w,v;
//n=G->vexnum;
for(v=1;v<=n;v++)
{
S[v

C dijkstra算法 最短路径 迪杰斯特拉 来自淘豆网www.taodocs.com转载请标明出处.