數組實現棧


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());
        }
        
    }

}

 

棧、隊列

  受限訪問:

    在數組中若知道數據項的下標,便立即可以反問該數據項;或者通過順序搜索數據項,訪問到數組中的各項數據。而棧、隊列等數據結構,訪問是受限的,即在特定時刻只有一個數據項可以被讀取或者刪除(除非作弊)。

    這些結構接口的設計增強了這種受限訪問。訪問其他數據項(理論上)是不允許的。

  更加抽象:

    棧、隊列和優先級隊列是比數組和其他數據存儲結構更為抽象的結構。主要通過接口對棧、隊列和優先級隊列進行定義,這些接口表明通過他們可以完成的操作,而他們的主要實現機制對用戶來說是不可見的。

    例如,棧的主要機制可以用數組來實現,但也可以通過鏈表來實現。優先級隊列內部實現可以用數組或一種特別的樹——堆來實現(用一種數據結構來實現另一種數據結構)。


  棧只允許訪問一個數據項:即最后插入的的數據項。移除這個數據項后才能訪問倒數第二個插入的數據項,一次類推。棧也是那些相當復雜的數據結構算法的遍歷工具

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM