溫習之數據結構——棧

如下從開源中國拷過來的,開源中不打算用了,換一個博客。數組

最近暫時不工做,也有一些時間來學習,平時常常寫一些很無味,很雷同的代碼,感受整我的都很差了,這幾天正好能夠好好利用,溫習一下數據結構,對邏輯思惟的鍛鍊和往後工做仍是有一些幫助的。數據結構

今天先說一下數據結構中很簡單很常見的棧,棧的特色就是先進後出,其實就像大學食堂的餐盤,服務人員在放餐盤的時候會一個個摞起來,最早放的確定是摞完後最下面的,最後放的是摞完後最上面的那個,而去食堂的大學生想取餐盤確定也是從最上面的那個取,直到最後一個被取走。棧也是一個道理。鄙人懶,仍是不畫圖了。學習

閒話少說,仍是上代碼吧。測試

/**這裏用數組來模擬棧*/
public class MyStack {
    private long [] arr;
    private int top; //至關於棧頂
    
    public MyStack(){
        arr = new long[10];
        top = -1;
    }
    public MyStack(int maxsize){
        arr = new long[maxsize];
        top = -1 ;
    }
    
    /**
     * 入棧
     */
    public void push(int value){
        arr[++top] = value;
    }
    
    /**
     * 出棧
     */
    public long pop(){
        return arr[top--];
    }
    
    /**
     * 查看數據,返回最上面的數據
     */
    public long peek(){
        if(!isEmpty()){
            return arr[top];
        }else return 0;
    }
    
    /**
     * 判斷是否爲空
     */
    public boolean isEmpty(){
        return top == -1;
    }
    
    /**
     * 判斷是否滿了
     */
    public boolean isFull(){
        return top == arr.length-1;
    }
}

測試類code

package stack_queue;

public class TestMyStack {
    public static void main(String[] args) {
        MyStack ms = new MyStack(4);
        ms.push(23);
        ms.push(12);
        ms.push(1);
        ms.push(90);
//        System.out.println(ms.isEmpty());
//        System.out.println(ms.isFull());
//        
//        System.out.println(ms.peek());
//        System.out.println(ms.peek());
        
        while(!ms.isEmpty()){
            System.out.println(ms.pop() + ",");
            System.out.println(ms.peek());
        }
        System.out.println(ms.isEmpty());
        System.out.println(ms.isFull());
    }
}

鑑於這個例子太簡單了,就很少作解釋了,下一篇介紹隊列隊列

相關文章
相關標籤/搜索