天天看點

無向帶權圖的鄰接矩陣表示--p135

源程式:

/*無向帶權圖的鄰接矩陣表示法*/
#include <stdio.h>
#define vnum 20
const int MAX_INT=0;
typedef struct gp
{
      char vexs[vnum];                 /*頂點資訊*/
      int arcs[vnum][vnum];           /*鄰接矩陣*/
      int vexnum,arcnum;              /*頂點數、邊數*/
}WGraph;void CreateGraph(WGraph *g)
{
    int i,j,n,e,w,k;
    char ch;
    printf("輸入頂點個數:\n");
    scanf("%d",&n);
    printf("輸入邊數:\n");
    scanf("%d",&e);   g->vexnum=n;
    g->arcnum=e;

    for(i=0;i<g->vexnum;i++)
          {         getchar();
                printf("第%d個頂點:\n",i+1);
                scanf("%c",&(g->vexs[i]));
          }

    for(i=0;i<g->vexnum;i++)
    {
            for(j=0;j<g->vexnum;j++)
        {
            g->arcs[i][j]=MAX_INT;
        }
    }
    printf("請輸入起點  終點  權值,用空格隔開,參照教材p135.\n");
    for(k=0;k<g->arcnum;k++)
      {
            scanf("%d %d %d",&i,&j,&w);
            g->arcs[i][j]=w;
            g->arcs[j][i]=w;
    }
}void OutGraph(WGraph *g)        /*輸出矩陣*/
{
      int i,j;
      for(i=0;i<g->vexnum;i++)
      {
            for(j=0;j<g->vexnum;j++)
              printf("%d   ",g->arcs[i][j]);
            printf("\n");
      }
}
void main()
{
      WGraph g;
    CreateGraph(&g);
      printf("輸出矩陣\n");
      OutGraph(&g);
}