我的Stack类中的JAVA pop函数问题

时间:2014-07-25 20:06:00

标签: java stack pop

我的堆栈实现(Java)存在问题。 这是我的代码:

public class Stack {
char[] stack;
int size;
public Stack(int n) {
    stack = new char[n];
    size = 0;
}
public void push(char c) {
    stack[size] = c;
    size++;
}
public char pop() {
    return stack[size--];
}
public boolean isEmpty() {
    return (size == 0);
}
public void print() {
    System.out.print("Stack : ");
    for(int i = 0; i < size; i++) {
        System.out.print(stack[i] + " ");
    }
}

} 这是主要方法:

Stack st = new Stack(4);
    st.push('a');
    st.push('n');
    st.push('a');
    st.print();
    char c = st.pop();
    System.out.println("char : " + c); // here is nothing

我认为pop函数是错误的,因为如果我从main方法函数调用它返回任何内容。感谢。

1 个答案:

答案 0 :(得分:1)

您在size中递减pop两次 - 一次在调试打印语句中,一次在访问阵列时。

因为您的size变量意味着比最后一个有效索引大一个,所以在访问数组之前只减少一次。

public char pop() {
    size--;
    System.out.println("class stack : " + stack[size]);
    return stack[size];
}