public class StackX { private int maxSize; private long[] stackArray; private int top; public StackX(int max){ stackArray = new long[max]; 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) { //創建棧 StackX stack = new StackX(10); //入棧 stack.push(10); stack.push(20); stack.push(30); stack.push(40); stack.push(50); //查看棧 System.out.println("查看棧:"+stack.peek()); //出棧 while(!stack.isEmpty()){ System.out.println("出棧"+stack.pop()); } } }
棧、隊列
受限訪問:
在數組中若知道數據項的下標,便立即可以反問該數據項;或者通過順序搜索數據項,訪問到數組中的各項數據。而棧、隊列等數據結構,訪問是受限的,即在特定時刻只有一個數據項可以被讀取或者刪除(除非作弊)。
這些結構接口的設計增強了這種受限訪問。訪問其他數據項(理論上)是不允許的。
更加抽象:
棧、隊列和優先級隊列是比數組和其他數據存儲結構更為抽象的結構。主要通過接口對棧、隊列和優先級隊列進行定義,這些接口表明通過他們可以完成的操作,而他們的主要實現機制對用戶來說是不可見的。
例如,棧的主要機制可以用數組來實現,但也可以通過鏈表來實現。優先級隊列內部實現可以用數組或一種特別的樹——堆來實現(用一種數據結構來實現另一種數據結構)。
棧
棧只允許訪問一個數據項:即最后插入的的數據項。移除這個數據項后才能訪問倒數第二個插入的數據項,一次類推。棧也是那些相當復雜的數據結構算法的遍歷工具