本周星期三(11月28日)大家做实验
实验8-----------有向图的邻接矩阵生成和显示
#include <stdio.h>
#include <stdlib.h>
#define MAXVEX 10 //默认最大顶点数
#define N 4
typedef char VertexType;
struct vertex
{
int num; //顶点编号
VertexType data; //顶点的信息
};
typedef struct graph
{
struct vertex vexs[MAXVEX]; //顶点集合
int edges[MAXVEX][MAXVEX]; //边的集合
} adjmax;
adjmax* creagraph(int n)
{
int i,j;
adjmax *adj;
adj=(adjmax *)malloc(sizeof(adjmax));
for (i=0;i<n;i++)
for (j=0;j<n;j++)
adj->edges[i][j]=0;
for (i=0;i<n;i++){
printf("第%d个顶点的信息:",i);
scanf("%c",&adj->vexs[i].data);
adj->vexs[i].num=i;
getchar();
for (j=0;j<n;j++)
{
//
printf("请输入两个顶点之间的连接情况,1-连接,0-不连接/n:");
printf("(%d,%d) w=",i,j);
scanf("%d",&adj->edges[i][j]);
getchar();
}
}
return adj;
}
void dispgraph(adjmax *adj,int n)
{
int i=0,j=0;
printf("/n显示邻接矩阵表示的图:/n");
printf(" ");
for (i=0;i<n;i++)
printf("%2c/t",adj->vexs[i].data);
printf("/n");
for(i=0;i<n;i++){
printf("%2c ",adj->vexs[i].data);
for (j=0;j<n;j++)
{
printf("%2d/t",adj->edges[i][j]);
}
putchar('/n');
}
}
int main()
{
adjmax *H;
H=creagraph(N);
dispgraph(H,N);
return 0;
}