源程序:
#include <stdio.h>
#include <stdlib.h>
const int vnum=20;
typedef struct gp
{
char vexs[vnum];
int arcs[vnum][vnum];
int vexnum,arcnum;
}Graph;
//輸入頂點和邊,創建圖
void create(Graph *g)
{
int i,j,k;
printf("請輸入頂點數和邊數:");
scanf("%d%d",&g->vexnum,&g->arcnum);
printf("請輸入 %d 個頂點的值:",g->vexnum);
getchar();
for(i=0;i<g->vexnum;i++)
scanf("%c",&g->vexs[i]);
for(i=0;i<g->vexnum;i++) //此雙重循環表示所有結點都沒有連接
for(j=0;j<g->vexnum;j++)
g->arcs[i][j]=0;
printf("請輸入 %d 條邊:",g->arcnum);
for(k=0;k<g->arcnum;k++)
{
scanf("%d%d",&i,&j);
g->arcs[i][j]=1;
g->arcs[j][i]=1;
}
}
//輸出鄰接矩陣
void showMatrix(Graph *g)
{
int i;
printf(" "); //三個空格
for(i=0;i<g->vexnum;i++)
printf("%3c",g->vexs[i]);
printf("\n");
for(i=0;i<g->vexnum;i++)
{
printf("%3c",g->vexs[i]);
for(int j=0;j<g->vexnum;j++)
printf("%3d",g->arcs[i][j]);
printf("\n");
}
}
int main()
{
Graph g,*pg=&g;
create(pg);
showMatrix(pg);
return 1;
}
運行結果: