棧的特征是后進先出(last-in, first-out, LIFO)。棧上的插入操作稱為壓入(PUSH),刪除操作稱為彈出(POP)。
下面使用一個數組S[n]來實現一個最多容納n個元素的棧。定義一個屬性指向最新插入的元素。棧的操作代碼如下:
public class Stack {private Object[] objs;private int pointTop = -1; //指向最新插入的元素public Stack() {}public Stack(int n) { //初始化數組的大小objs = new Object[n];}public boolean isEmpty() {if(pointTop == -1){return true;}return false;}public boolean isFull() {if(pointTop == objs.length-1){return true;}return false;}public boolean push(Object obj) {if(!isFull()){pointTop += 1;objs[pointTop] = obj;return true;}return false;}public Object pop() {if(isEmpty()){return -1;}else{pointTop = pointTop-1;return objs[pointTop+1];}}public static void main(String[] args) {Stack stack = new Stack(10);for(int i=0;i<5;i++){if(stack.push(i)){System.out.println(i);}}System.out.println();for(int i=0;i<5;i++){System.out.println(stack.pop());}}}
運行結果:
0
1
2
3
4
4
3
2
1
0