Java 示例 - 栈的实现

  • 问题描述

    如何实现栈?
  • 解决方案

    下面的例子展示了如何通过创建用户定义的 push() 方法来输入元素和 pop() 方法来从栈中检索元素来实现栈。
    
    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 long peek() {
          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);
          
          while (!theStack.isEmpty()) {
             long value = theStack.pop();
             System.out.print(value);
             System.out.print(" ");
          }
          System.out.println("");
       }
    }
    
  • 结果

    上面的代码示例将产生以下结果。
    
    50 40 30 20 10
    
    下面是另一个示例,通过创建用户定义的用于输入元素的 push() 方法和用于从栈中检索元素的 pop() 方法来实现栈。
    
    import java.util.*;
    public class Demo {
       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