查看: 2311| 回复: 12
跳转到指定楼层
上一主题 下一主题
收起左侧

[树/链表/图] 请问这样写问题出在哪里?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
我要reverse linked list from node head to node tail
下面这段不对,在while loop写curr!=tail.next就是错的,curr到了tail.next还是会继续进入loop,what?why?
private void reverse(ListNode head, ListNode tail) {
        ListNode prev = null;
        ListNode curr = head;
        while (curr != tail.next){
            ListNode next = curr.next;
            curr.next = prev;
            prev = curr;
            curr = next;
        }
    }
但下面这种情况就work啦,把tail.next存成variable
private void reverse(ListNode head, ListNode tail) {
        ListNode prev = null;
        ListNode curr = head;
        ListNode stop = tail.next;
        while (curr != stop){
            ListNode next = curr.next;
            curr.next = prev;
            prev = curr;
            curr = next;
        }
    }

这到底是为什么啊?大神快指点我一下,脑子转不过来了我

上一篇:求mock interview伙伴或现有mock interview群
下一篇:1000+刷题经验及面试感悟分享
推荐
duao119 2021-6-16 06:59:35 | 只看该作者
全局:
建议debug不出来的时候上ide打断点一步一步跑,比冥思苦想有用多了

评分

参与人数 1大米 +1 收起 理由
PusheenHeaven + 1 赞一个

查看全部评分

回复

使用道具 举报

推荐
 楼主| pnwair 2021-6-16 10:33:23 | 只看该作者
全局:
核桃jett 发表于 2021-6-16 06:29
因为最后一轮tail.next被改了,不是null了,所以最后curr == null,但是tail.next变成倒数第二个node不是nu ...

多谢啦🙏,已经明白了。
回复

使用道具 举报

推荐
 楼主| pnwair 2021-6-16 03:36:21 | 只看该作者
全局:
oneplay 发表于 2021-6-16 03:27
curr 会扫到的,如果不动tail 相当于这题没做完啊

omg, 我好蠢啊,我已经把tail.next改了。

多谢大神的解释,省了我好多时间!
回复

使用道具 举报

🔗
oneplay 2021-6-16 02:28:18 | 只看该作者
全局:
本帖最后由 oneplay 于 2021-6-16 03:07 编辑

过tail之后 tail->next 指的是前面的节点。直接 while(curr!=null) 就好了
回复

使用道具 举报

🔗
 楼主| pnwair 2021-6-16 02:39:24 | 只看该作者
全局:
oneplay 发表于 2021-6-16 02:28
因为是双向链表,过tail之后 tail->next 指的是前面的节点。直接 while(curr!=null) 就好了

是单向的啊 zszszszszs
回复

使用道具 举报

🔗
oneplay 2021-6-16 03:08:54 | 只看该作者
全局:
本帖最后由 oneplay 于 2021-6-16 03:10 编辑
pnwair 发表于 2021-6-16 02:39
是单向的啊 zszszszszs

一个意思,比较一下你的两种写法就是 tail.next 的值改变了
回复

使用道具 举报

🔗
 楼主| pnwair 2021-6-16 03:23:30 | 只看该作者
全局:
oneplay 发表于 2021-6-16 03:08
一个意思,比较一下你的两种写法就是 tail.next 的值改变了

sorry,我没听懂。我没touch tail啊,它的值为什么会改变呐
回复

使用道具 举报

🔗
oneplay 2021-6-16 03:27:07 | 只看该作者
全局:
pnwair 发表于 2021-6-16 03:23
sorry,我没听懂。我没touch tail啊,它的值为什么会改变呐

curr 会扫到的,如果不动tail 相当于这题没做完啊
回复

使用道具 举报

🔗
oneplay 2021-6-16 03:27:27 | 只看该作者
全局:
pnwair 发表于 2021-6-16 03:23
sorry,我没听懂。我没touch tail啊,它的值为什么会改变呐

curr 会扫到的,如果不动tail 相当于这题没做完啊
回复

使用道具 举报

🔗
核桃jett 2021-6-16 06:29:33 | 只看该作者
全局:
因为最后一轮tail.next被改了,不是null了,所以最后curr == null,但是tail.next变成倒数第二个node不是null了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表