天天看點

棧的數組實作_JAVA描述《資料結構與算法分析》

主類

棧的數組實作_JAVA描述《資料結構與算法分析》

package DataStructures;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

public class ArrayStack {

棧的數組實作_JAVA描述《資料結構與算法分析》

    private Object[] theArray;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    private int topOfStack;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    static final int DEFAULT_CAPACITY = 10;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    /**

棧的數組實作_JAVA描述《資料結構與算法分析》

     * Construct the stack.

棧的數組實作_JAVA描述《資料結構與算法分析》

     * 

棧的數組實作_JAVA描述《資料結構與算法分析》

     */

棧的數組實作_JAVA描述《資料結構與算法分析》

    public ArrayStack() {

棧的數組實作_JAVA描述《資料結構與算法分析》

        this(DEFAULT_CAPACITY);

棧的數組實作_JAVA描述《資料結構與算法分析》

    }

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

     * @param capacity

棧的數組實作_JAVA描述《資料結構與算法分析》

     *            teh capacity.

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    public ArrayStack(int capacity) {

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    public boolean IsEmpty() {

棧的數組實作_JAVA描述《資料結構與算法分析》

        return topOfStack == -1;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    public boolean IsFull() {

棧的數組實作_JAVA描述《資料結構與算法分析》

        return topOfStack == theArray.length - 1;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    public void MakeEmpty() {

棧的數組實作_JAVA描述《資料結構與算法分析》

        topOfStack = -1;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

     * Insert a new item into the stack, if not already full.

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

     * @param x

棧的數組實作_JAVA描述《資料結構與算法分析》

     *            th item to insert.

棧的數組實作_JAVA描述《資料結構與算法分析》

     * @throws Overflow

棧的數組實作_JAVA描述《資料結構與算法分析》

     *             if stack is already full.

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    public void Push(Object x) throws Overflow {

棧的數組實作_JAVA描述《資料結構與算法分析》

        if (IsFull())

棧的數組實作_JAVA描述《資料結構與算法分析》

            throw new Overflow();

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

        theArray[++topOfStack] = x;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

     * Get the most recently inserted item in the stack. Dos not alter the

棧的數組實作_JAVA描述《資料結構與算法分析》

     * stack.

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

     * @return the most recently inserted item, or null, if empty.

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    public Object Top() {

棧的數組實作_JAVA描述《資料結構與算法分析》

        if (IsEmpty())

棧的數組實作_JAVA描述《資料結構與算法分析》

            return null;

棧的數組實作_JAVA描述《資料結構與算法分析》

        return theArray[topOfStack];

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    public void Pop() throws Underflow {

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

            throw new Underflow();

棧的數組實作_JAVA描述《資料結構與算法分析》

        theArray[topOfStack--] = null;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

     * Return and remove most recently inserted item form the stack.

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

     * @return most recently inserted item, or null, if stack is empty.

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

    public Object TopAndPop() {

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

        Object topItem = Top();

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

        return topItem;

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

}

棧的數組實作_JAVA描述《資料結構與算法分析》

異常類

棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》
棧的數組實作_JAVA描述《資料結構與算法分析》

/**

棧的數組實作_JAVA描述《資料結構與算法分析》

 * Exception class for access in full containers such as stacks, queues, and

棧的數組實作_JAVA描述《資料結構與算法分析》

 * priority queues.

棧的數組實作_JAVA描述《資料結構與算法分析》

 */

棧的數組實作_JAVA描述《資料結構與算法分析》

public class Overflow extends Exception {

棧的數組實作_JAVA描述《資料結構與算法分析》

本文轉自冬冬部落格園部落格,原文連結:http://www.cnblogs.com/yuandong/archive/2006/08/23/484641.html,如需轉載請自行聯系原作者