【发布时间】:2017-01-03 04:41:33
【问题描述】:
如果我维护the least added item 的引用但不维护most recently added 项目的引用,那么我将拥有恒定时间"dequeue" 和线性时间"enqueue"。所以这是我在java链表中实现队列的程序。我想问一下这个程序是否同时维护最少添加的项目和最近添加的项目?所以当我"dequeue" 或"enqueue" 时,这都是恒定的时间?谢谢!
补充:我有点同意第一个答案所说的,所以我尝试了调试模式,它表明 oldlast 在最后一次更改后没有更新,所以它仍然有效......但是从我从 uni 学到的参考理论,就像他说的那样,它不应该工作..任何人都可以告诉我为什么它没有自动更新?(我的java版本1.8)
package tst;
public class linkedlsqueue {
private class Node {
String item;
Node next;
}
Node first, last;
public boolean isEmpty() {
return first == null;
}
public void enqueue(String item) {
Node oldlast = last;
last = new Node();
last.item = item;
if (isEmpty()) {
first = last;
}
else {
oldlast.next = last;
}
}
public String dequeue() {
String item = first.item;
first = first.next;
if (isEmpty()) {
last = null;
}
return item;
}
}
【问题讨论】: