#include <stdio.h>
#include <stdlib.h>
#define maxsize 50
typedef struct { char v[maxsize]; int arcs[maxsize][maxsize]; int node, side; }Adjacent;
int init(Adjacent& T);
int print(Adjacent T);
int create(Adjacent& T);
int Locate(Adjacent T, char s);
int main()
{
Adjacent T;
init(T);
create(T);
print(T);
return 0;
}
int init(Adjacent& T)
{
int m, n,i,j;
printf("输入总边数和总顶点数:");
scanf_s("%d%d",&T.side,&T.node);
for (i = 0; i < T.node; i++)
{
printf("输入第%d个点:\n",i+1);
getchar();
scanf_s("%c",&T.v[i]);
}
printf("矩阵初始化:权值全部为0\n");
for (i=0;i<T.node;i++)
for (j = 0; j < T.node; j++)
{
T.arcs[i][j] = 0;
}
printf("finsh\n");
print(T);
return 0;
}
int print(Adjacent T)
{
int i, j;
printf("顶点集:");
for (i = 0; i < T.node; i++)
printf("%c ",T.v[i]);
printf("\n");
printf("输出矩阵:\n");
for (i = 0; i < T.node; i++)
{
for (j = 0; j < T.node; j++)
{
printf("%d ", T.arcs[i][j]);
}
printf("\n");
}
return 0;
}
int create(Adjacent& T)
{
int p, q, i,weigth,l;
char s1, s2;
for (i = 0; i < T.side; i++)
{
printf("输入第一个点:");
getchar();
scanf_s("%c",&s1);
printf("输入第二个点:");
getchar();
scanf_s("%c",&s2);
printf("输入权值:");
scanf_s("%d",&weigth);
p = Locate(T, s1); q = Locate(T, s2);
printf("%d %d",p,q);
T.arcs[p][q] = weigth;
T.arcs[q][p] = weigth;
}
return 0;
}
int Locate(Adjacent T, char s)
{
int i;
for (i = 0; i < T.node; i++)
{
if (T.v[i] == s)
return i;
}
}