试看指针再数据结构中的巧妙应用(一)

    一、问题背景:

            舍友在学习链表的定义时,出现了无法建立头结点与新增节点之间联系的问题,经分析,发现了指针在解决该问题中的十分巧妙的应用。

    二、问题重述与归结

            

            问题出现在代码行22,23,33,34。

   {

        headp = newp;

        tailp = newp;

//然后又重新更新了newp  

        newp = (node *)malloc(sizeof(struct node));

        tailp->next = newp;

        tailp = newp;

    }

            以上的代码,出现了两个指针等于一个指针,然后又对其中一个指针进行操作,最后更是出现了更加让人难以理解的指针更新。于是该问题总结归述为:在用三个互相联系的指针之间的关系处理。

        三、问题解析

            

            图例中我们看到,当headp与tailp都指向了n节点的时候,操作tailp就相当于操作了n节点,相应的headp的性质也随之改变。

            在这里我们要说明的是,在普通变量的赋值与操作中,改变一个变量的性质对其他变量是没有任何影响的,而在指针操作中是大不相同的。数据结构里的很多算法都是为了能够简便的实现操作,利用指针进行大量的优化是十分常见的。

            时刻理解所有的指针的意义。




PS:初来驾到,这是第一篇博客,其实也不算什么博客,只不过是在学习中的一点小突破,小成就,希望能够一直坚持写下去。

                

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值