出於某種奇怪的原因,無論何時我打印反轉堆棧的大小(用於測試目的),我都會繼續獲取7.爲什麼會出現這種情況?不應該反轉的堆棧是空的,因爲沒有任何東西被推入它?謝謝!使用兩個堆棧實現隊列奇怪的錯誤
public class QueueViaStacks {
static Stack original;
static Stack reversed;
// push everything into the first stack
public void enqueue(Object item) {
// create stack if it is not yet created
if (original == null)
original = new Stack();
original.push(item);
}
public Object dequeue() {
if (reversed == null)
reversed = new Stack();
System.out.println(reversed.size);
Object temp;
// reverse stack by copying everything from first stack to second stack
if (reversed.isEmpty()) {
while (original != null) {
temp = original.pop();
reversed.push(temp);
}
}
return reversed.pop();
}
public int size() {
return original.getSize() + reversed.getSize();
}
public static void main(String[] args) {
QueueViaStacks stack = new QueueViaStacks();
stack.enqueue('T');
stack.enqueue('E');
stack.enqueue('S');
stack.enqueue('T');
stack.enqueue('I');
stack.enqueue('N');
stack.enqueue('G');
stack.dequeue();
}
}
下面是我的Stack類:
公共類堆棧{
static Node top;
static int size = 0;
public void push(Object item) {
Node t = new Node(item);
t.next = top;
top = t;
size++;
}
public Object pop() {
while (top != null) {
Object temp = top.item;
top = top.next;
size--;
return temp;
}
return null;
}
public int getSize() {
return size;
}
public boolean isEmpty() {
if (size == 0)
return true;
return false;
}
public void print(Stack stack) {
Node temp = top;
while (temp != null) {
System.out.println(temp.item);
temp = temp.next;
}
}
}
如果沒有看到'Stack'(以及「size」 *初始化*)。 –
你在使用java.util.Stack嗎? –
在任何情況下,儘管我沒有看到任何解釋您描述的大小問題的東西,但是我會在'enqueue()'和'dequeue()'中看到一些嚴重的缺陷。如果'Stack'應該是'java.util.Stack',你的代碼甚至不會編譯。 –