#include<iostream>
using namespace std;
#define MAXSIZE 100
#define INFINITY 65535
typedef int Arc;
typedef char Vertex;
struct MGraph
{
Vertex V[MAXSIZE];
Arc Edge[MAXSIZE][MAXSIZE];
int Edgenum;
int Vexnum;
};
void CreateGraph(MGraph *G)
{
printf("请输入顶点数和边数:");
scanf("%d%d",&(G->Vexnum),&(G->Edgenum));
char c;
c=getchar();
int i,j;
for(i=0;i<G->Vexnum;i++)
for(j=0;j<G->Vexnum;j++)
G->Edge[i][j]=INFINITY;
printf("请输入顶点信息(char)型\n");
for(i=0;i<G->Vexnum;i++)
scanf("%c",&(G->V[i]));
c=getchar();
int w=0;
for(int k=0;k<G->Edgenum;k++)
{
printf("请输入(vi,vj)的下标i,j和权值w:");
scanf("%d%d%d",&i,&j,&w);
c=getchar();
G->Edge[i][j]=w;
G->Edge[j][i]=w;
}
}
void printGraph(MGraph *G)
{
printf("含有%d个顶点,%d条边\n",G->Vexnum,G->Edgenum);
printf("打印顶点表信息:\n");
for(int i=0;i<G->Vexnum;i++)
printf("%c ",G->V[i]);
printf("\n");
printf("各结点相连情况:\n");
for(int j=0;j<G->Vexnum;j++)
{
for(int k=0;k<G->Vexnum;k++)
{
printf("%d\t",G->Edge[j][k]);
}
printf("\n");
}
}
void main()
{
MGraph G;
CreateGraph(&G);
printGraph(&G);
}
原图:
运行结果: