#include <stdio.h>
#include <malloc.h>
#define VERTEX_MAX 30
#define MAXSIZE 20
typedef struct
{
int arcs[VERTEX_MAX][VERTEX_MAX]; //定義臨接矩陣的長寬
int vexnum,arcnum; //vexnum頂點數,arcnum邊數
} MGraph;
/************ 初始化臨接矩陣**********/
void creat_MGraph1(MGraph *g)
{
int i,j,n,m; // n是頂點數,m是邊數
printf("請輸入頂點數和邊數:");
scanf("%d%d",&n,&m);
g->vexnum=n; //初始化臨接矩陣的頂點數
g->arcnum=m; //初始化臨接矩陣的邊數
for (i=0;i<n;i++) // 初始化臨接矩陣
for (j=0;j<n;j++)
g->arcs[i][j]=0;
while(1)
{
printf("請輸入一條邊的兩個頂點:\n");
scanf("%d%d",&i,&j);
if(i==-1 || j==-1) //當臨接矩陣賦值的終止條件
break;
else if(i==j || i>=n || j>=n) //不符合臨接矩陣條件的輸入
{
printf("輸入錯誤,請重新輸入!\n");
}
else
{
g->arcs[i][j]=1; //無項無權數存儲數值
g->arcs[j][i]=1;
}
}
}
/************輸出臨接矩陣***********/
void printMG(MGraph *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");
}
printf("\n");
}
int main()
{
MGraph *g1;
g1=(MGraph *)malloc(sizeof(MGraph));
printf("1:創建無向圖的鄰接矩陣\n\n");
/**********創建臨接矩陣********/
creat_MGraph1(g1);
printf("\n此圖的鄰接矩陣爲:\n");
/***********輸出臨接矩陣********/
printMG(g1);
return 0;
}
臨接矩陣的存儲和輸出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.