关于带哨兵位的双向循环链表中为什么不用二级指针传参

我们都知道,想要通过函数形参修改实参,就需要传递二级指针,而下面这个链表的尾插函数传参却并没有传递二级指针,下面我将对这个情况做些解释和自己的理解。

void text_pushback()
{
	//初始化链表
	Lisnode* plice = Intit();
	pushback(plice, 1);
	pushback(plice, 1);
	pushback(plice, 1);
	pushback(plice, 1);
	pushback(plice, 1);
	print(plice);

}

首先我们留意标题,这是个带哨兵位的双向循环链表,先解释一下哨兵位,哨兵位就是一个不存储有效数据的链表节点,我的理解就是类似一种网络接口一样,找到这个接口,并插上网线就能上网(找到数据)。

假设我们现在已经创建好了一个带哨兵位的链表,已经往里面插入了一个数据,那么这个链表的逻辑图就是类似这样

当需要改变head这个头指针的指向时,我们才需要使用二级指针。比如,现在我malloc出来一个新的空间,给这块空间命名为newnode。当我需要在函数里将head这块空间的地址指向newnode时,这时就需要使用“&”将存储head这个地址的空间的地址取出,并在函数里用二级指针接收,这样才能在函数里改变head这块空间的指向,也就是说,当我们需要改变头节点的位置时,我们才需要使用二级指针,而带哨兵位的双向循环链表中,头节点永远是哨兵位,不会改变头节点,所以不需要使用二级指针。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值