图的邻接矩阵储存算法问题

Mathew_Lewis Mathew_Lewis 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include<stdlib.h>
#include<string.h>


/********************************图的存储结构定义***********************/
#define MaxVerNum 30
#define Vextype char
#define EdgeInfoType int

#define INF 999 //无穷大
#define MAXSIZE 100

typedef struct
{
Vextype vexs[MaxVerNum];
EdgeInfoType edges[MaxVerNum][MaxVerNum];
int n,e;
}MGragh;



int visited[MaxVerNum]; //顶点访问标记

void CreateGraph(MGragh *g)
{
int i,j,k,w;
printf("请输入顶点数和边数(输入格式为:顶点数,边数):\n");
scanf("%d,%d",&(g->n),&(g->e));
printf("请输入顶点信息(输入格式为:顶点号):\n");
for(i=0;i<g->n;i++)
scanf("%c\n",&(g->vexs[i]));
//初始化邻接矩阵

for(i=0;i<g->n;i++)
for(j=0;j<g->n;j++)
g->edges[i][j]=INF;

printf("请输入每条边对应的两个顶点的序号及每条边的权重 (输入格式为:i,j,k):"); //程序运行到这一步直接跳过接下来的for循环,这是为什么?
for(k=0;k<g->e;k++)
{
scanf("%d,%d,%d",&i,&j,&w);
g->edges[i][j]=w; //此为有向图的邻接矩阵储存建立
}

}

//打印图(邻接矩阵)
void printGragh(MGragh *g)
{
printf("\n图G的邻接矩阵\n");
printf("顶点:\n");
for(int i=0;i<g->n;i++)
{
printf("%c\t",g->vexs[i]);
}
printf("\n邻接矩阵:\n");
for(int i=0;i<g->n;i++)
{
for(int j=0;j<g->n;j++)
{
printf("%d\t",g->edges[i][j]);
}
printf("\n");
}
}

MGragh *init_MGraph()
{
MGragh *mg=(MGragh *)malloc(sizeof(MGragh));
if(mg)
{
mg->n=0;
mg->e=0;
}

return mg;
}

int main()
{
//创建图(邻接矩阵)
MGragh *mG=init_MGraph();
CreateGraph(mG);
printGragh(mG);
}
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部