我正在尝试实现一个非常简单的堆栈,但是,似乎我需要为此使用一个节点。我有下面的编译和工作正常,然而,它会引发很多错误,直到有人第一次推动。我处于这样一种情况,我无法控制消费者主要方法中的内容,所以我认为最好避免这些错误,只需初始化一个初始值为零的新堆栈对象。不幸的是,我无法弄明白该怎么做。这里有人能告诉我吗?
import java.util.*;
public class StackQ {
Node top;
public StackQ() {
top=null;
}
class Node {
public int x = 0;
public Node next;
Node(int d) {x=d; next=null;}
public int getData() {return x;}
}
public int pop() {
if(top!=null) {
int item = top.x;
top = top.next;
return item;
}
return -1;
}
public void push(int x) {
Node t = new Node(x);
t.next = this.top;
this.top = t;
}
public int top() {
if (top == null) throw new EmptyStackException();
return top.x;
}
public static void main(String[] args) {
StackQ mainStack = new StackQ();
}
}
答案 0 :(得分:2)
如果他们使用top()
而没有在堆栈中放任何东西,他们就会错误地使用你的堆栈。说真的,他们应该得到例外。他们不应该以这种方式使用你的堆栈,而是由他们来正确处理这个异常。
但是如果你真的想要总是以0开始你的堆栈(非常清楚,我建议不要这样做)只需将它放在你的构造函数中。
public StackQ() {
top=new Node(0);
}