【问题标题】:Deleting First Node in Doubly Linked List删除双向链表中的第一个节点
【发布时间】:2014-10-13 01:30:48
【问题描述】:

以下代码删除双向链表中的第一个节点。

public Node deleteFirst()
    {
        Node temp = first;

        if(first.next==null)
            last = null;
        else
            first.next.previous = null;
            first = first.next;

        return temp;
    }

如果列表只包含 1 个元素,我们将 last 的引用设置为 null。我的问题是我们为什么不将 first 的引用设置为 null ?它甚至会有所作为吗?

【问题讨论】:

    标签: java data-structures linked-list


    【解决方案1】:

    这种方法有几个问题,除了缺少括号。

    public Node deleteFirst()
        {
            Node temp = first;
    
            if (first != null) { // list might be empty
                if(first.next==null) {
                    last = null;
                    first = null; // you must remove the first element if it's the 
                                  // only one, otherwise the next call to deleteFirst
                                  // will return the same Node again
                } else {
                    first.next.previous = null;
                    first = first.next;
                }
            }
            return temp;
    
        }
    

    【讨论】:

    • 所以你的意思是如果列表中只有一个元素,你必须将最后一个和第一个引用都设置为null?我的书只设置 last 为 null 这就是为什么我很困惑,因为对我来说它没有意义。
    • 这本书的全名和作者是什么?
    • @user2733436 如果不将first 设置为null,则可以无限次调用deleteFirst 获取具有单个Node 的列表,并且它将始终返回相同的Node。
    • @Greycon 它是 Java 第二版中的数据结构和算法,作者:Robert Lafore(参见第 #227 页)
    • 现在只是去喝一品脱,明天再看看。我同意@Eran
    【解决方案2】:

    你缺少括号

    这个语句在任何情况下都会被执行,因为它在 if/else 之外

    first = first.next;
    

    这不是蟒蛇

    else {
       first.next.previous = null;
       first = first.next;
    }
    

    【讨论】:

    • 我正在使用 java 的数据结构和算法,它们在书中没有括号。但我想那是因为他们只是在展示。
    • 2nding Xinzz 的评论。我总是使用括号,包括一行。
    • 好的,很抱歉这个错误。但是你们谁能告诉我为什么 last 设置为 null 而不是 first 吗?
    • last 设置为 null,因为如果您从只有一个元素的链表中删除第一个元素,则没有最后一个也没有第一个,所以 null
    • 是的,但您不应该也将 first 设置为 null 吗? ERAN发布的答案也表明
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多