在Java解释中弹出堆栈

时间:2018-09-13 17:35:04

标签: java stack pop

下面给出的代码是堆栈的实现。 在它的pop函数中,它不会返回top下方的元素,而是top元素

      public class MyStack {
      private int maxSize;
      private long[] stackArray;
      private int top;

      public MyStack(int s) {
      maxSize = s;
      stackArray = new long[maxSize];
      top = -1;}
      public void push(long j) {
      stackArray[++top] = j;}

      public long pop() {
      return stackArray[top--];}

      public boolean isEmpty() {
      return (top == -1);}

      public boolean isFull() {
      return (top == maxSize - 1);}

      public static void main(String[] args) {
      MyStack theStack = new MyStack(10); 
      theStack.push(10);
      theStack.push(20);
      theStack.push(30);
      theStack.push(40);
      theStack.push(50);
      theStack.pop();

      while (!theStack.isEmpty()) {
      long value = theStack.pop();
      System.out.print(value);
      System.out.print(" ");}
      System.out.println("");}}

1 个答案:

答案 0 :(得分:1)

否; top--的意思是:从顶部减去1,但是此表达式解析为top递减之前的值。所以:

int x = 5; System.out.println(x--); System.out.println(x);将先打印5,然后再打印4

您粘贴的代码使用top作为指示符来指向最顶部的元素,这就是为什么堆栈为空时top为-1的原因。这有点不合常规(如果用top指向第一个空闲插槽的话,top会与堆栈的大小完全匹配),但是那是只是样式问题。