有大佬能看出來那個錯誤在哪里嘛?找了好久沒找出來
#include <stdio.h>
#include <stdlib.h>
#define INFIN 32767
#define N 20
typedef char VexType;
typedef struct
{
int vexnum,arcnum;
VexType vexs[N];
int arcs[N][N];
}MGraph;
typedef struct Edge
{
int v1,v2;
int weight;
}Edge;
Edge edges[N];
int flag[N];
void CreateMGraph(MGraph *g)
{
int i,j,u,k=1;
char v;
i=0;
while((v=getchar())!='#')
{
g->vexs[i]=v;
i++;
}
g->vexnum=i;
for(i=0;i<g->vexnum;i++)
for(j=0;j<g->vexnum;j++)
g->arcs[i][j]=0;
scanf("%d,%d,%d",&i,&j,&u);
getchar();
while((i!=-1)&&(j!=-1)&&(u!=-1))
{
g->arcs[i][j]=u;
g->arcs[j][i]=u;
scanf("%d,%d,%d",&i,&j,&u);
getchar();
k++;
}
g->arcnum=k;
}
void SortEdges(MGraph *g)
{
int i,j,k,L=0;
for(i=1;i<g->vexnum;i++)
for(j=0;j<i;j++)
if(g->arcs[i][j]!=0)
{
k=L;
while(k>0&&edges[k-1].weight>g->arcs[i][j])
{
edges[k]=edges[k-1];
k--;
}
edges[k].weight=g->arcs[i][j];
edges[k].v1=i;
edges[k].v2=j;
L++;
}
}
void Kruskal(MGraph *g)
{
int i,j,factor,temp;
for(i=0;i<g->vexnum;i++) flag[i]=i;
for(i=0;i<g->arcnum;i++)
if(flag[edges[i].v1]!=flag[edges[i].v2])
{
printf("\n(%c,%c)--%d",g->vexs[edges[i].v2],g->vexs[edges[i].v1],edges[i].weight);
factor=flag[edges[i].v1];
temp=flag[edges[i].v2];
for(j=0;j<g->vexnum;j++)
if(flag[j]==temp)
flag[j]=factor;
}
}
int main()
{
MGraph g;
CreateMGraph(&g);
SortEdges(&g);
Kruskal(&g);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/233266.html
標籤:C++ 語言
