/* 无向图临接矩阵存储算法
问题:边数只能读取前两个输入的。 */
#include<stdio.h>
#define MAXSIZE 10
typedef struct
{
char vertex[MAXSIZE]; //顶点为字符型且顶点顶点表的长度小于MAXSIZE。
int edges[MAXSIZE][MAXSIZE]; //边为整形且edges为邻接矩阵
}mgraph; //采用邻接矩阵存储的图类型
void creatmgraph(mgraph *g,int e,int n)
{ //建立无向图的临接矩阵g->edges,n为顶点个数,e为边数
int i,j,k;
char ch;
printf("输入顶点数据(0~n-1):\n");
for(i=0;i<n;i++) //读入顶点信息
{
scanf("%c",&ch);
g->vertex[i]=ch;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
g->edges[i][j]=0;
} //初始化临接矩阵
printf("输入边(i,j):");
for(k=1;k<=e;k++) //输入e条边
{
scanf("%d,%d",&i,&j);
g->edges[i][j]=1;
g->edges[j][i]=1; //无向图 建立对称矩阵
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",g->edges[i][j]);
printf("\n");
}
}
int main()
{
int n,e;
mgraph g;
printf("请输入顶点和边数:");
scanf("%d%d",&n,&e);
creatmgraph(&g,e,n);
return 0;
}
- 2 回答
- 0 关注
- 1647 浏览
添加回答
举报
0/150
提交
取消