【问题标题】:Linked List : What exactly sth.next refers to?链表:sth.next 到底指的是什么?
【发布时间】:2018-11-11 14:34:15
【问题描述】:

我最近在 youtube 上观看了一系列 LinkedList 视频,如下图所示:

enter image description here

视频网址:https://www.youtube.com/watch?v=2RwWsHePdr8&index=11&list=PL6Zs6LgrJj3tWQfE6HK4JaX3wN96yhkD3

不,我想删除数字 15(位置 3),所以这里是代码:

if(position ==1) {
                ListNode temp = head;
                head = head.next;
                temp.next = null;
                return temp;
                }else {
                    ListNode previous = head;
                    int count =1;
                    while(count < position -1) {
                        previous = previous.next;
                        count++;
                    }

                    ListNode current = previous.next;
                    previous.next = current.next;
                    current.next = null;
                    return current;
                }

我有一个问题让我很困惑:图片中:|10|_|--> | 8 | __ | 如果我输入:『head.next』,意思是 8 吗?还是指10旁边的节点空间?

因为在我透露的代码中,我无法理解:“为什么最后一个代码是『current.next = null;』?” 我认为『current.next』指向11号?? 如果『current.next』表示15的下一个节点,那么之前的代码『previous.next = current.next』是否应该改为『previous.next = current.next.next』?也就是说『current.next.next』可以参考11号

提前致谢!!

更新:head.next 和 head.next.next 是这样的意思吗? enter image description here

【问题讨论】:

    标签: singly-linked-list


    【解决方案1】:

    word next 指向下一个节点,由地址(系统内存地址)和值(例如15)组成

    如果您知道需要删除值为 15 的节点,则可以遍历数组并将此节点的“下一个”节点的指针绑定到节点,即 15 显示在上

    ListNode temp = head;
    while (temp.next != null){
        if (temp.next.value == 15):
            ListNode nodeWithValue15 = temp.next;
            temp.next = nodeWithValue15.next;
            // after rebinding address to your previous node, you can delete node with value 15
            nodeWithValue15 = null;
        temp = temp.next;
    

    Here you can see what next.next does

    【讨论】:

    • 感谢您的回复!!以防万一,(因为我怕我误解了你的解释)你提到的第一行关于“下一个点到下一个节点”的LinkedList节点的关系看起来像我画的这张图吗? p.s.我找不到在评论区添加图片的地方,所以我在我的问题文章中添加图片(在最后一行)非常感谢!
    • 是的!您已经正确绘制了图片。 World next 指的是您在此处正确绘制的整个节点。但是要注意将单词“.next.next.next ....”堆叠在一起,因为最后一个节点的值是“next” Null - 所以如果你尝试调用属性,你可能会遇到空指针异常不存在的节点的“下一个”。玩得开心,继续学习:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多