棧是一種只能在一端進行插入和刪除操做的特殊線性表;它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,須要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來);棧具備記憶做用,對棧的插入與刪除操做中,不須要改變棧底指針;插入通常稱爲進棧(PUSH),刪除則稱爲退棧(POP)。this
package com.jalja.org.arith; public class MyStack<E>{ private Object [] arr;//存儲 private int index;//棧元素實際入棧索引 private int maxSize;//棧的最大空間 private MyStack(int maxSize) { this.arr=new Object[maxSize]; this.index=0; this.maxSize=maxSize; } //入棧 public void push(E e) { if(isFull()) { throw new RuntimeException("myStack is full "); } arr[index++]=e; } //出棧 public E pop() { if(isNull()) { throw new RuntimeException("myStack is null "); } E e=(E)arr[--index]; return e; } //訪問棧頂元素 public E peek() { return (E)arr[index-1]; } //棧是否爲空 public boolean isNull() { return this.index <= 0; } //棧是否滿了 public boolean isFull() { return index>=maxSize; } public static void main(String[] args) { MyStack<String> myStack=new MyStack(3); myStack.push("A0"); myStack.push("A1"); myStack.push("A2"); System.out.println(myStack.peek()); while(!myStack.isNull()) { System.out.println(myStack.pop()); } } }