顺序链表逻辑问题记录

本blog是记录数据结构链表部分的一个我犯过的逻辑问题。

如图,输入一组数据,以-1作为结尾且不接收-1,

以链表的形式储存并逆向遍历输出。

逻辑如下图 

 由于要求逆向输出,我本能的选择在接收数组的时候提前将数据反转。但结果却使我困惑于输出的结果。于是从逻辑入手,第一次循环产生链表确实会产生如我所预想的结果,但第二次的加入的结点却出现在head与第一个temp中间,第三次会出现在head与第二个temp中间,最终导致输出结果的错误。我有考虑过移动head能否解决问题,但我发现head更像是链表的一个产生结点的索引,移动到哪里都无法让我满意。最终的解决方法还是落在了head上,只要最开始的时候不给head赋值就不会出现想要移动head去无法如愿的情况。当跳出固有的“head应该有值”的思维后,问题就清楚了许多。如上所言,head就是发挥一个找到生成结点的位置的作用。只是正因为如此,正序输入的链表实际上一直接在head后面,当从head遍历的时候,结果本身就是逆序的。而我最开始的刻板思维认为结果的输出逆序就应该在接收数组的时候逆序接收,由此导致了head自身是最后一个接收的数,但之后的输出顺序反而是正序的接收数。

关键点:

1、链表的head不予以赋值,本身只是起到确认新建结点位置的作用。

2、head后的链表储存顺序是逆序储存,即先进后出

谨以此blog记录一次链表的相关问题,同时警示自己勿要抓着刻板印象不放,相信自己的逻辑判断。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSLADZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值