Java如何實現堆疊?

2019-10-16 22:29:08

在Java程式設計中,如何實現堆疊?

下面的例子展示了如何通過建立使用者定義的push()方法來推入元素和pop()方法從堆疊中彈出檢索元素來實現堆疊。

package com.yiibai;

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

    public ImplementationOfStack(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 long peek() {
        return stackArray[top];
    }

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

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

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

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

上述程式碼範例將產生以下結果 -

50 40 30 20 10

範例-2

以下是通過建立使用者定義的push()方法用於輸入元素和pop()方法從堆疊中檢索元素來實現堆疊的另一個範例。

package com.yiibai;


import java.util.*;

public class ImplementationOfStack2 {
   static void showpush(Stack stack1, int a) {
      stack1.push(new Integer(a));
      System.out.println("push(" + a + ")");
      System.out.println("stack: " + stack1);
   } 
   static void showpop(Stack stack1) {
      Integer a = (Integer) stack1.pop();
      System.out.println(a);
      System.out.println("stack: " + stack1);
   } 
   public static void main(String args[]) {
      Stack stack1 = new Stack();
      System.out.println("stack: " + stack1);
      showpush(stack1, 40);
      showpush(stack1, 50);
      showpush(stack1, 60);
      showpop(stack1);
      showpop(stack1);
      showpop(stack1);
      try {
         showpop(stack1);
      } catch (EmptyStackException e) {
         System.out.println("it Is Empty Stack");
      } 
   }
}

上述程式碼範例將產生以下結果 -

stack: []
push(40)
stack: [40]
push(50)
stack: [40, 50]
push(60)
stack: [40, 50, 60]
60
stack: [40, 50]
50
stack: [40]
40
stack: []
it Is Empty Stack