#include <stdio.h>
#define Max 32767 /*此处用32767代表无穷大*/
#define M 100 /*最大顶点数*/
typedef char VertexType; /*顶点值类型*/
typedef struct{
VertexType vertices[M]; /*顶点信息域*/
int Edge[M][M]; /*邻接矩阵*/
int numV,numE; /*图中顶点总数与边数*/
} AdjMatrix; /*邻接矩阵表示的图类型*/
/* 函数功能:建立图的邻接矩阵 */
void creat(AdjMatrix *G, int n, int e)
{
int i, j, vi, vj, w; /*w为边的权值*/
G->numV=n;
G->numE=e;
printf("输入顶点的信息:\n");
for( i=0; i<G->numV; i++ )
{
printf("%d:",i+1);
scanf("%c\n",&G->vertices[i]);
//printf("%c ",G.vertices[i]);
getchar();
//
}
for( i=0; i<G->numV; i++ )
for( j=0; j<G->numV; j++ )
{
G->Edge[i][j]=Max;
if(i==j)G->Edge[i][j]=0;
}
for( i=0; i<G->numE; i++ )
{
printf("输入边的信息及权值(vi,vj,w):");
scanf("%d,%d,%d",&vi,&vj,&w);
G->Edge[vi-1][vj-1]=w;
G->Edge[vj-1][vi-1]=w; /*对于无向图*/
}
}
/* 函数功能:输出图的邻接矩阵 */
void print(AdjMatrix G)
{
int i,j;
printf ("输出顶点的信息:\n");
for( i=0; i<G.numV; i++ )
{
printf("%c ",G.vertices[i]);
}
printf("\n输出图的邻接矩阵:\n" );
for( i=0; i<G.numV; i++ )
{
for( j=0; j<G.numV ;j++ )
printf("%6d",G.Edge[i][j] );
printf("\n");
}
}
int main()
{
int u, v, w, st;
AdjMatrix G;
int n,e;
printf("请分别输入顶点数和边数:");
scanf("%d%d",&n,&e);
int m=e;
creat(&G, n, e);
print(G);
//dijkstra(G,1);
}
/* 测试输入信息为
6 6
1
2
3
4
5
6
1,2,20
1,3,30
2,4,40
3,4,50
4,5,70
4,6,80
*/
输出顶点的信息后面是空白的,检查了好久都没发现bug