C语言-数据结构-prim算法求最小生成树

#include
#include
#include "ljjz.h"
typedef struct edgedata
{
    int beg,en;
    int length;
}edge;
void peim(Mgraph g,edge tree[M-1])
{
    edge x;
    int d,min,j,k,s,v;
    for(v=1;v<=g.n-1;v++)
    {
        tree[v-1].beg=0;
        tree[v-1].en=v;
        tree[v-1].length=g.edges[0][v];
    }
    for(k=0;k<=g.n-3;k++)
    {
        min=tree[k].length;
        s=k;
        for(j=k+1;j<=q.n-2;j++)
        {
            if(tree[j].length             {
                min=tree[j].length;
                s=j;
            }
        }
        v=tree[s].en;
        x=tree[s];
        tree[s]=tree[k];
        for(j=k+1;j<=g.n-2;j++)
        {
            d=g.edges[v][tree[j].en;
            if(d             {
                tree[j].length=d;
                tree[j].beg=v;
            }
        }
    }
    printf("\nthe minimum cost spanning tree is:\n");
    for(j=0;j<=g.n-2;j++)
    {
        printf("\n%c---%c %d\n",g.vexs[tree[j].beg],g.vexs[tree[j].en],tree[j].length);
        printf("\nthe root of it is:%c\n",g.vexs[0]);
    }
}
int main()
{
    Mgraph g;
    edge tree[M-1];
    char filename[20];
    printf("please input filename of Graph:");
    gets(filename);
    creat(&g,filename,0);
    prim(g,tree);
    return 0;
}

你可能感兴趣的:(C语言-数据结构)