无向图 c语言 (数据结构)

来源:互联网 发布:华为光猫开启端口23 编辑:程序博客网 时间:2024/05/21 09:06

#include<stdio.h>
#include<stdlib.h>
#define  N  100
typedef struct
{
int vers[N];//顶点
int arcs[N][N];//邻接矩阵
int n,e;//n为顶点数,e为边
}graph;
void createUDG(graph *G)
{
int i,j,k,a,b;
printf("输入顶点数和边数:");
scanf("%d %d",&(G->n),&(G->e));
printf("输入顶点信息:");
for(i=0;i<(G->n);i++)
scanf("%d",&(G->vers[i]));
for(i=0;i<(G->n);i++)
for(j=0;j<(G->n);j++)
G->arcs[i][j]=0;//邻接矩阵初始化为0
printf("\n");
for(k=0;k<(G->e);k++)
{
int x,y;
printf("输入第%d条边的两个顶点:",k+1);
scanf("%d %d",&x,&y);
if(x>(G->n)||y>(G->n))
{
printf("Error");
}
for(i=0;x!=(G->vers[i]);i++);
for(j=0;y!=(G->vers[j]);j++);
G->arcs[i][j]=G->arcs[j][i]=1;//构造邻接矩阵,确定每条边的两个顶点的下标
}
}
int main()
{
graph G;
int i,j;
createUDG (&G);
printf("Output\n");
for(i=0;i<(G.n);i++)
{
for(j=0;j<(G.n);j++)
printf("%2d",G.arcs[i][j]);
printf("\n");
}
return 0;
}

原创粉丝点击