图/网-邻接矩阵-有/无 向网

来源:互联网 发布:淘宝售后客服怎么样 编辑:程序博客网 时间:2024/04/28 15:41
#include <stdio.h> 
#include <stdlib.h>
#define MAXVEX 20 //最大顶点个数
#define INFINITY 32768 //表示极大值
typedef int Vextype;
typedef struct {
int arcs [MAXVEX][INFINITY];//边/弧 信息
Vextype vex[MAXVEX];//顶点信息
int vexnum; //顶点数目
int arcnum; //边/弧 个数
}AdjMatrix;


void Create(); //输出邻接矩阵
void Print(); //创建图(有向和无向)邻接矩阵


void main () {
AdjMatrix *g = NULL;
g = (AdjMatrix *)malloc(sizeof(AdjMatrix));
Create(g);
Print(g);
}


void Create(AdjMatrix *g) {
int i, j, k, weight;
char vex1, vex2;
printf("请输入无向网中的顶点数:");
scanf("%d",&g->vexnum);
printf("请输入无向网中的边数:");
scanf("%d",&g->arcnum);
for (i = 1; i <= g->vexnum; i++) {
for (j = 1; j <= g->vexnum; j++) {
g->arcs[i][j] = INFINITY;//如果不是网,则赋值0
}
}
printf("请输入无向网中%d个顶点:\n",g->vexnum);
for (i = 1; i <= g->vexnum; i++) {
printf("No.%d个顶点:顶点",i);
scanf("%d",&g->vex[i]);
}
printf("请输入无向网中%d条边:\n",g->arcnum);
for (k = 0; k < g->arcnum; k++) {
printf("\nNo.%d条边:\n",k+1);
printf("\t<---> 顶点V:");
scanf("%d",&vex1);
printf("\t<---> 顶点V:");
scanf("%d",&vex2);
printf("\t<---> 权值: ");
scanf("%d",&weight);
g->arcs[vex1][vex2] = weight;//如果不是网,则赋值1
g->arcs[vex2][vex1] = weight;//如果是有向网,注释此句
}
}


void Print(AdjMatrix *g) {
int i, j;
for (i = 0; i <= g->vexnum; i++) {
printf("%c ",i+64);
}
printf("\n");
for (i = 1; i <= g->vexnum; i++) {
printf("%c ",i+64);
for (j = 1; j <= g->vexnum; j++) {
printf("%d\t",g->arcs[i][j]);
}
printf("\n");
}

}






0 0
原创粉丝点击