天天看點

用簡單數組實作棧(java)

last-in first-out (LIFO)後進先出特性

屬性 array(棧數組) t(棧頂位置) 

方法(空,滿,放,取,大小,擷取棧頂元素)

public class MyArrayStack {

    int[] array;

    int t = -1;

    public MyArrayStack(int array_size) 

    {

        this.array = new int[array_size];

    }

    public void push(int temp) throws Exception 

    {

        if (isFull()) 

        {

            throw new Exception("The stack is Full!Can not push!");

        }

        else 

        {

            array[t+1] = temp;

            t = t + 1;

        }

    }

    public int pop() throws Exception 

    {

        if (isEmpty()) 

        {

            throw new Exception("The stack is Empty!Can not pop!");

        }

        else 

        {

            int ret;

            ret = array[t];

            t = t - 1;

            return ret;

        }

    }

    public boolean isFull() 

    {

        if (t + 1 == array.length) 

        {

            return true;

        }

        else 

        {

            return false;

        }    

    }

    public boolean isEmpty() 

    {

        if (t < 0) 

        {

            return true;

        }

        else 

        {

            return false;

        }    

    }

    public int size() 

    {

        return t + 1;

    }

    public int top() throws Exception 

    {

        if (isEmpty()) 

        {

            throw new Exception("The stack is Empty!No top value!");

        }

        else 

        {

            return array[t];

        }

    }

    public static void main(String[] args) throws Exception 

    {

        MyArrayStack mystack = new MyArrayStack(10);

        try {

            mystack.push(4);

            mystack.push(3);

            mystack.push(2);

            mystack.push(1);

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        while(!mystack.isEmpty()) 

        {

            System.out.println(mystack.pop());    

        }

    }

}