#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define _CRT_SECURE_NO_WARNINGS
typedef char VertexType[4];
typedef int VRType;
#define MAX 10
typedef struct graph
{
int arcnum;
int vexnum;
VertexType vextex[MAX];
VRType matrix[MAX][MAX];
}GRAPH, *LPGRAPH;
int searchPos(LPGRAPH G, VertexType x)
{
for (int i = 0; i<G->vexnum; i++)
{
if (strcmp(G->vextex[i], x) == 0)
return i;
}
return -1;
}
LPGRAPH createGraph()
{
LPGRAPH G = (LPGRAPH)malloc(sizeof(GRAPH));
printf("请输入边数和顶点数:");
scanf("%d%d", &G->arcnum, &G->vexnum);
printf("请输入%d个顶点:\n", G->vexnum);
for (int i = 0; i < G->vexnum; i++)
{
scanf("%s", G->vextex[i]);
}
memset(G->matrix, 0, sizeof(int)* 100);
printf("请输入%d 条边的信息:\n",G->arcnum);
VertexType v1, v2;
VRType vrt;
for (int i = 0; i<G->arcnum; i++)
{
scanf("%s%s%d", v1, v2, &vrt);
int posV1 = searchPos(G, v1);
int posV2 = searchPos(G, v2);
G->matrix[posV1][posV2] = vrt;
}
return G;
}
void printGraph(LPGRAPH G)
{
for (int i = 0; i < G->vexnum; i++)
{
printf("\t%s", G->vextex[i]);
}
printf("\n");
for (int i = 0; i < G->vexnum; i++)
{
printf("%s\t", G->vextex[i]);
for (int j = 0; j<G->vexnum; j++)
{
printf("%d\t", G->matrix[i][j]);
}
printf("\n");
}
}
int main()
{
LPGRAPH G = createGraph();
printGraph(G);
system("pause");
return 0;
}