简单堆栈,如何将Node初始化为0而不是null

时间:2017-07-03 20:07:21

标签: java stack

我正在尝试实现一个非常简单的堆栈,但是,似乎我需要为此使用一个节点。我有下面的编译和工作正常,然而,它会引发很多错误,直到有人第一次推动。我处于这样一种情况,我无法控制消费者主要方法中的内容,所以我认为最好避免这些错误,只需初始化一个初始值为零的新堆栈对象。不幸的是,我无法弄明白该怎么做。这里有人能告诉我吗?

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();
}

}

1 个答案:

答案 0 :(得分:2)

如果他们使用top()而没有在堆栈中放任何东西,他们就会错误地使用你的堆栈。说真的,他们应该得到例外。他们不应该以这种方式使用你的堆栈,而是由他们来正确处理这个异常。

但是如果你真的想要总是以0开始你的堆栈(非常清楚,我建议不要这样做)只需将它放在你的构造函数中。

public StackQ() {
    top=new Node(0);
}