数据结构与算法(JAVA)学习踩坑日记——updating...

这篇博客详细记录了学习数据结构中链表反转问题的过程,重点解析了一段用于反转单链表的代码,通过实例和debug验证了代码的正确性。博客作者分享了自己从困惑到理解的思路,并强调了在链表操作中指针赋值的特殊性。
摘要由CSDN通过智能技术生成

数据结构与算法学习日记

前言

说明:此博客主要记录我学习过程中遇到的问题以及分享解决办法。同时也欢迎各位指出存在问题的地方和建议
课程是尚硅谷的,课程链接:点这里


1、P22腾讯面试题

题目要求:将单链表反转
老师的代码:

while (ture) {
	next = cur.next;
	cur.next = reversehead.next;//不好理解的就是这一句
	rehead.next = cur;
	cur = next;
}

不好理解的地方在于,老师解释的时候还是按照定性思维去思考:等号左边内容指向等号右边内容。如果按照这样理解,那么cur.next指向的内容实际上就是新链表头部后方的null区域,该段区域看似无法被指向。
理解方法:
将等号仍然看成赋值符号。以3个有效节点为例,我画了一张图:
在这里插入图片描述

经过IDEA中debug确认了赋值过程后印证了这一解释:
loop 1:

sentence1
step1
sentence2
在这里插入图片描述

sentence3
在这里插入图片描述
sentence4
在这里插入图片描述
Attention:next在此处主要是为了保存cur的后续节点,按照jvm的机制,当一个指针指向某个节点后,对该指针进行任何操作都会影响到原链表。
Loop 2、Loop 3过程类似,由我画的图可以看出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值