数据结构——迪杰斯特拉算法

这一篇写一下Dijkstra算法。当初学习数据结构的课件找不到了,就在网上找了两张图片,有一个有权无向图以及迪杰斯特拉算法的原理思想。

数据结构——迪杰斯特拉算法_第1张图片数据结构——迪杰斯特拉算法_第2张图片


以下是C++实现代码:

#include
#include

#define MAXVEX 100

using namespace std;

typedef struct
{
    int matrix[MAXVEX][MAXVEX];
    int numNodes, numEdges;
} Graph;

void CreateGraph(Graph *Gp)
{
    int i, j, k, w;
    bool isDirected;
    cout<<"无向图请输入0,有向图请输入1"<>isDirected;
    cout<<"请输入顶点数和边数(空格分隔):"<>Gp->numNodes>>Gp->numEdges;;
    for (i=1;i<=Gp->numNodes;i++)
    {
        for (j=1;j<=Gp->numNodes;j++)
        {
            if (i==j)
                Gp->matrix[i][j]=0;
            else
                Gp->matrix[i][j]=INT_MAX;
        }
    }
    cout<<"请输入边(vi, vj)和权值w,三个变量空格分隔即可:"<numEdges;k++)
    {
        cin>>i>>j>>w;
        Gp->matrix[i][j]=w;
        if(!isDirected)
            Gp->matrix[j][i]=Gp->matrix[i][j];
    }
}

void ShowGraph(Graph M){
    int i, j;
    for(i=1;i<=M.numNodes;i++){
        for(j=1;j<=M.numNodes;j++){
            if(M.matrix[i][j]!=INT_MAX)
                cout<>start;
    Dijkstra(M, start);

    return 0;
}

运行结果:

 
  

数据结构——迪杰斯特拉算法_第3张图片


你可能感兴趣的:(数据结构及算法)