#include <stdio.h>
#define Maxvertexnum 100
typedef char VertexData;
typedef int AdjType;
typedef int OtherInfo;//权值
typedef struct ArcNode{//边信息
AdjType adj;//边的信息1代表有边,0代表没边
OtherInfo info;
}ArcNode;
typedef struct {//邻接矩阵
VertexData vertex[Maxvertexnum];//顶点数组
ArcNode arcs[Maxvertexnum][Maxvertexnum];//定义邻接矩阵
int vexnum,arcnum;//定义结点和边的数目
}AdjMatrix;
int LocateVertex(AdjMatrix *G,VertexData v){//求顶点的在顶点数组的下标
int j=-1,k,i;
for(k=0;k<G->vexnum;k++){
if(G->vertex[k]==v){
j=k;
break;
}
}
return j;
}
void GreateMatrix(AdjMatrix *G){//使用邻接矩阵创建无向图
char v1,v2;
int i,j,k;
printf("使用邻接矩阵创建图,请输入图的顶点个数和弧数!\n");
scanf("%d %d",&G->vexnum,&G->arcnum);
for (i = 0; i <G->vexnum ; ++i) {//初始化
for (j = 0; j <G->vexnum ; ++j) {
G->arcs[i][j].adj=0;
}
}
printf("请输入图的各个顶点\n");
for (int l = 0; l < G->vexnum; ++l) {
fflush(stdin);
scanf("%c",&G->vertex[l]);
}
printf("输入两个相连的顶点名称!\n");
for (k = 0; k < G->arcnum; ++k) {
fflush(stdin);
scanf("%c-%c",&v1,&v2);
i=LocateVertex(G,v1);
j=LocateVertex(G,v2);
G->arcs[i][j].adj=1;//无向图
G->arcs[j][i].adj=1;
}
printf("打印出用邻接矩阵创建的无向图!\n");
for (i = 0; i < G->vexnum ;++i) {
for (j = 0; j < G->vexnum; ++j) {
printf("%d ",G->arcs[i][j].adj);
}
printf("\n");
}
}
int main() {
printf("使用邻接矩阵创建无向图!\n");
AdjMatrix G;
GreateMatrix(&G);
return 0;
}
图的创建——邻接矩阵法
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 图由有穷、非空点集和边集合组成,简写成G(V,E0) 图的创建有多种方法(邻接矩阵、邻接表、十字链表) 图的遍历方...
- 采用邻接矩阵表示法创建无向网 采用邻接表表示法创建无向图 深度优先搜索遍历连通图的递归算法 深度优先搜索遍历非连通...
- 1 图的定义 一个图(G)定义为一个偶对(V,E),记为G=(V,E)。V是顶点(Vertex)的非空有限集合,记...