求解图的单源最短路径问题

这篇博客探讨了在构建图的邻接矩阵时遇到的问题,包括如何正确分配内存以及在VC 2010环境下进行开发。作者指出,在函数中使用malloc为邻接图分配空间时,需要使用引用符以更新原始指针变量。此外,还发现memset初始化数组后,部分元素值异常,原因在于循环变量的范围设置不当。
摘要由CSDN通过智能技术生成

问题一

void creatMGraph(int n,int e,MGraph *g,int edge[][MAXV])
{	g=(MGraph*)malloc(sizeof(MGraph));
	g->n=n;g->e=e;
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			g->edges[i][j]=edge[i][j];
}

本想调用这个函数用现有的边数和定点数,以及图的邻接矩阵构建一个图。这个函数中有一个形参是邻接图的指针,但是由于它仅仅是个指针,尚未被分配任何空间,所以我在函数体中调用了malloc函数为其分配一个MGraph大小的空间来存放想要构建的邻接图。注意这个malloc函数实际上是又创造了一个指针变量,以及它所指向的内存空间,因此在将这个变量赋值给g的时候,g是发生了变化的。而指针变量作为函数的形式参数时,虽然我们可以改变其所指向的值,但是并不能改变指针变量本身的值,因此需要在这个指针变量的形参前加一个引用符。改动后如下所示。

void creatMGraph(int n,int e,MGraph *&g,int edge[][MAXV])
{	g=(MGraph*)malloc(sizeof(MGraph));
	g->n=n;g->e=e;
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			g->edges[i][j]=edge[i][j];

问题二

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值