邻接矩阵的实现出现错误,帮忙修改一下
#include<stdio.h>#define VERTEX_MAX 26
#define MAXVALUE 32767
typedef struct
{
char Vertex;//保存顶点信息
int Edges;//保存边的权值
int isTrav;//遍历标志
int VertexNum;//顶点数量
int EdgeNum;//边的数量
int GraphType;
}MatrixGraph;
void CreateMatrixGraph(MatrixGraph *G)//创建邻接矩阵
{
int i,j,k,weight;
char start,end;
printf("输入各点信息\n");
for(i=0;i<G->VertexNum;i++)
{
getchar();
printf("第%d个顶点:",i+1);
scanf("%c",&(G->Vertex));//保存到个顶点数组元素中
}
printf("输入构成各边的两个顶点及权值:\n");
for(k=0;k<G->EdgeNum;k++)
{
getchar();//暂停输入
printf("第%d条边",k+1);
scanf("%d,%d,%d",&start,&end,&weight);
for(i = 0;start != G->Vertex;i++)
for(j=0;end != G->Vertex;j++)
G->Edges = weight;
if(G->GraphType == 0)
G->Edges = weight;
}
}
void OutMatrix(MatrixGraph *G)
{
int i,j;
for(j=0;j<G->VertexNum;j++)
printf("\t%c",G->Vertex);
printf("\n");
for(i=0;i<G->VertexNum;i++)
{
printf("%c",G->Vertex);
for(j=0;j<G->VertexNum;j++)
{
if(G->Edges == MAXVALUE)
printf("\t&&");
else
printf("\t%d",G->Edges);
}
printf("\n");
}
}
int main()
{
MatrixGraph G;
int i,j;
printf("输出图的类型0代表无向图,1代表有向图");
scanf("%d",&G.GraphType);
printf("输入图的顶点数量和边的数量:");
scanf("%d,%d",&G.VertexNum,&G.EdgeNum);
for(i=0;i<G.VertexNum;i++)
for(j=0;j<G.VertexNum;j++)
G.Edges = MAXVALUE;
CreateMatrixGraph(&G);
printf("输出数据");
OutMatrix(&G);
return 0;
} #include<stdio.h>
#define VERTEX_MAX 26
#define MAXVALUE 32767
typedef struct
{
char Vertex;//保存顶点信息
int Edges;//保存边的权值
int isTrav;//遍历标志
int VertexNum;//顶点数量
int EdgeNum;//边的数量
int GraphType;
}MatrixGraph;
void CreateMatrixGraph(MatrixGraph *G)//创建邻接矩阵
{
int i,j,k,weight;
int start,end;
printf("输入各点信息\n");
for(i=0;i<G->VertexNum;i++)
{
printf("第%d个顶点:",i+1);
scanf_s(" %c",&(G->Vertex));//保存到个顶点数组元素中
}
printf("输入构成各边的两个顶点及权值:\n");
for(k=0; k<G->EdgeNum; k++)
{
printf("第%d条边",k+1);
scanf_s(" %d,%d,%d",&start,&end,&weight);
G->Edges=weight;
if(G->GraphType==0)
{
G->Edges=weight;
}
}
printf("haha\n");
}
void OutMatrix(MatrixGraph *G)
{
int i,j;
for(i=0;i<G->VertexNum;i++)
{
printf("%c",G->Vertex);
for(j=0;j<G->VertexNum;j++)
{
if(G->Edges == MAXVALUE)
{
printf("&&");
}
else{
printf("%d",G->Edges);
}
}
printf("\n");
}
}
int main()
{
MatrixGraph G;
int i,j;
printf("输出图的类型0代表无向图,1代表有向图");
scanf_s("%d",&G.GraphType);
printf("输入图的顶点数量和边的数量:");
scanf_s("%d,%d",&G.VertexNum,&G.EdgeNum);
for(i=0;i<G.VertexNum;i++)
for(j=0;j<G.VertexNum;j++)
G.Edges = MAXVALUE;
CreateMatrixGraph(&G);
printf("输出数据\n");
OutMatrix(&G);
return 0;
}
页:
[1]