z06190115 发表于 2008-6-25 11:21

运行结果出错,怎么办?????????/

#include"stdio.h"

typedef struct
{
  int fromvex,endvex;
  float length;
}edge;
typedef struct
{
  float dist[100][100];
}graph;

graph *ga;
edge T[100];
void creatgraph(graph *ga,int n)  /*建立图的邻接矩阵*/
{
  int i,j,k,e;
  float w;
  e=(n-1)*n/2;
  for(i=0;i<n;i++)
          for(j=0;j<n;j++)
           ga->dist[i][j]=0;
  for(k=0;k<e;k++)
  {
    scanf("%d%d%f",&i,&j,&w);
        ga->dist[i][j]=w;
        ga->dist[j][i]=w;
  }
}
void prim(graph *ga,edge T[],int n)   
{
  int j,k,m,v;
  float min,max=10000;
  float d;
  edge e;
  for(j=1;j<n;j++)
  {
    T[j-1].fromvex=1;
        T[j-1].endvex=j+1;
        T[j-1].length=ga->dist[0][j];
  }
  for(k=0;k<n-1;k++)
  {
    min=max;
        for(j=k;j<n-1;j++)
          if(T[j].length<min)
          {
            min=T[j].length;
                m=j;
          }
          e=T[m];
          T[m]=T[k];
          T[k]=e;
          v=T[k].endvex;
          for(j=k+1;j<n-1;j++)
          {
            d=ga->dist[v-1][T[j].endvex-1];
                if(d<T[j].length)
                {
                  T[j].length=d;
                  T[j].fromvex=v;
                }
          }
  }
}
void printmimtree(edge T[],int n) /*打印出最小生成树的权,即所得的输出*/
{
int i;
float m=0;
for(i=0;i<n-1;i++)
         m+=T[i].length;
printf("%d\n",m);
}
int main()
{
  int n;
  graph *ga;
  edge T[100];
  scanf("%d",&n);

    return 1;

}


页: [1]

编程论坛