不清楚为什么在第 1 行分配"start"/提供参考



这是一个单链表实现的问题。

假设定义了一个类Node。现在,对于操作,定义了另一个类LinkedList。我们将在起始位置添加元素。

class LinkedList {
    protected Node start;
    protected Node end;
    public int size;
    public LinkedList() {
        start = null;
        end = null;
        size = 0;
    }
    //method for insert at start
    public void insertAtStart(int value) {
        Node nptr = new Node (value, null);
        size++;
        if (start == null) {
            start = nptr;
            end = start; //Line 1
        }
    }
    // others method(omitted here)
}

我在想,如果我们在第1行中将nptr本身分配给end,会发生什么?在这个问题上我没有说清楚

行后:

start = nptr;

变量start持有引用到与nptr相同的对象,即在:

Node nptr = new Node (value, null);

所以调用end = startend = nptr并不重要,因为end之后会包含相同的引用;nptr, endstart都指向同一个对象

在这种情况下,应该只在第一次调用insertAtStart(int val)时更新结束引用变量,以维护对结束节点的引用。

如果您将nptr本身赋值给第1行中的end,则end引用变量将具有对新添加节点的引用(这是列表的第一个节点)。

相关内容

  • 没有找到相关文章

最新更新