关于指针的认识

在写图的邻接矩阵转化为图的邻接表存储时,碰到了一个问题,为每个节点建立好VNode之后,每个节点的ArcNode无法正确建立。在调试的过程中,发现程序有新建节点的操作,但是没有与之前的链表指针关联,这个问题本质上是线性表的建立问题。

寻找程序的错误,发现首先是新建操作的p节点没有回到起始位置,也就是没有保存头结点,在一次遍历完成后,给每个VNode节点赋值的是最后的p为NULL的内存。

所以想办法新建变量保存头指针。接下来是新建了head指针和p指针。

head = null

p = head

我天真的以为对p的变量的操作会反映到head指针,但是结果同上面的一样,head仍然为null。将p变为二级指针仍然如此。

网上正常的做法是将在结尾增加节点看做插入节点。

总结原因如下:
使用一级指针的时候,p的内容是null,p便是在内存里新开了一段内存,这样的操作当然无法放映到head上面。

使用二级指针时,我认为p的改变会导致head的改变并没有错,但是我忽略了p的每一次改变都会反映到head上,所以最终的结果仍然是,内存都建立了,但是还是找不到头指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值