java 數據結構與算法---棧

原理來自百度百科

1、棧的定義

棧是一種只能在一端進行插入和刪除操做的特殊線性表;它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,須要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來);棧具備記憶做用,對棧的插入與刪除操做中,不須要改變棧底指針;插入通常稱爲進棧(PUSH),刪除則稱爲退棧(POP)。this

                                                                 

     

2、棧的實現

 

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());
        }
    }
}
相關文章
相關標籤/搜索