📄 c_ljjz.c
字号:
/******************************************************/
/* 图的邻接矩阵创建算法 */
/* 文件名c_ljjz.c 函数名creatmgraph1() */
/* 函数名creatmgraph2() */
/******************************************************/
#include <stdio.h>
#include "mgraph.h"
void creatmgraph1(mgraph *g)
{int i,j,k,w; /*建立有向网络的邻接矩阵存储结构*/
printf("please input n and e:\n");
scanf("%d%d",&g->n,&g->e); /*输入图的顶点数与边数*/
getchar();
printf("please input vexs:\n");
for(i=0;i<g->n;i++) /*输入图中的顶点值*/
g->vexs[i]=getchar();
for(i=0;i<g->n;i++) /*初始化邻接矩阵*/
for(j=0;j<g->n;j++)
if (i==j) g->edges[i][j]=0;
else g->edges[i][j]=FINITY;
printf("please input edges:\n");
for (k=0;k<g->e;k++) /*输入网络中的边*/
{scanf("%d%d%d", &i,&j,&w);
g->edges[i][j]=w;
/*若是建立无向网,只需在此加入语句g->edges[j][i]=w;即可*/
}
}
void creatmgraph2(mgraph *g)
{int i,j,k,w; /*建立无向网络的邻接矩阵存储结构*/
printf("please input n and e:\n");
scanf("%d%d",&g->n,&g->e); /*输入图的顶点数与边数*/
getchar();
printf("please input vexs:\n");
for(i=0;i<g->n;i++) /*输入图中的顶点值*/
g->vexs[i]=getchar();
for(i=0;i<g->n;i++) /*初始化邻接矩阵*/
for(j=0;j<g->n;j++)
if (i==j) g->edges[i][j]=0;
else g->edges[i][j]=FINITY;
printf("please input edges:\n");
for (k=0;k<g->e;k++) /*输入网络中的边*/
{scanf("%d%d%d", &i,&j,&w);
g->edges[i][j]=w;
g->edges[j][i]=w;
}
}
void print(mgraph g)
{/*辅助函数,输出邻接矩阵表示的图g*/
int i,j;
for (i=0;i<g.n;i++)
printf("%c ",g.vexs[i]);
printf("\n");
for (i=0;i<g.n;i++)
{ for (j=0;j<g.n;j++)
printf("%6d",g.edges[i][j]);
printf("\n");
}
}
/* 主程序 */
/*
main()
{mgraph g1,g2;
creatmgraph1(&g1);
creatmgraph2(&g2);
printf("\n有向图g1的邻接矩阵是:\n");
print(g1);
printf("\n无向图g2的邻接矩阵是:\n");
print(g2);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -