最近我在java中读到了enqueue的实现,并且对于其中几行的含义变得非常困惑。
public void enqueue(String item) {
Node oldlast = last;
last = new Node();
last.item = item;
last.next = null;
if (isEmpty())
first = last;
else
oldlast.next = last;
}
我很困惑,因为oldlast只在这个方法中创建,为什么我们会在其他之后声明“oldlast.next = last”?在方法之后它会被销毁,对吗?
另外,如果我们只在第一个为空时添加last to first,如果我添加两个节点然后删除两个节点会不会错误?由于首先只添加了一个节点而我想删除两个节点会有异常吗?
答案 0 :(得分:0)
public void enqueue(String item)
{
Node oldlast = last; // last points to some Node_A, oldlast also will point at the same object
last = new Node(); // Now last points to new object (Node_B), old last still points to Node_A
last.item = item;
last.next = null;
if (isEmpty()) first = last;
else oldlast.next = last;
}
答案 1 :(得分:0)
oldLast
不是创建的,它只是对last
的同一对象的引用。
public void enqueue(String item)
{
Node oldlast = last; // oldLast -> nodeX, last -> nodeX
last = new Node(); // oldLast -> nodeX, last -> nodeY
last.item = item;
last.next = null;
if (isEmpty()) first = last;
else oldlast.next = last; // change the nodeX
}