这是求最小生成树的程序麻烦帮改一下??

来源:百度知道 编辑:UC知道 时间:2024/06/02 21:26:47
#include<stdlib.h>
#define Max 10
#define VertexNum 5
struct List
{
int Marked;
int Vertex1;
int vertex2;
struct List *Next;
};
typedef struct List Node;
typedef Node *Edge;
int Edges[10][3]=
{ {1,2,7},{1,3,6},{1,4,5},{1,5,12},{2,3,14},
{2,4,8},{2,5,8},{3,4,3},{3,5,9},{4,5,2}};
int Visited[VertexNum+1];
void Prims(Edge Head,int Index)
{
Edge Pointer;
Edge MinEdge;
int EdgeNum=0;
int Weight=0;
int i;
Visited[Index]=1;
while (EdgeNum !=(VertexNum-1))
{
MinEdge->Weight=999;
for(i=1;i<=VertexNum;i++)
{
Pointer=Head;
if (Visited[i]==1)
{
while (Pointer->Marked==1)
Pointer=Pointer->Next;
if(MinEdge->Weight>Pointer->Weight)
MinEdge=Pointer;
while(Pointer!=

错误好多阿, 现在可以运行了,看看结果对不对?

#include<stdlib.h>
#define VertexNum 5

struct List
{
int Marked;
int Vertex1;
int Vertex2;
int Weight;
struct List *Next;
};

typedef struct List Node;
typedef Node *Edge;

int Edges[10][3]=
{ {1,2,7},{1,3,6},{1,4,5},{1,5,12},{2,3,14},
{2,4,8},{2,5,8},{3,4,3},{3,5,9},{4,5,2}};

int Visited[VertexNum];

void Prims(Edge Head,int Index)
{
Edge Pointer;
Edge MinEdge;
int EdgeNum=0;
int Weight=0;
int i;
Visited[Index]=1;
while (EdgeNum !=(VertexNum-1))
{
MinEdge->Weight=999;
for(i=0;i<VertexNum;i++)
{
Pointer=Head;
if (Visited[i]==1)
{
while (Pointer->Marked==1)
Pointer=Pointer->Next;
if(MinEdge->Weight>Pointer->Weight)
MinEdge=Pointer;
while(Pointer!=NULL){
if(Visited[Pointer->Ver