數據結構之棧

數據結構之棧

一:棧的定義

棧(stack)是限定在表尾進行插入和刪除的操作的線性表。

棧是先進者後出,後進者先出。

棧的操作:入棧,壓棧,進棧都表示向棧中添加數據。出棧,彈棧是從棧中刪除數據。

棧是一種“操作受限”的線性表。

二:java數組實現棧

棧主要的操作有:出棧和入棧。java可以使用數組和鏈表來實現棧的功能,使用數組實現的叫做順序棧,使用鏈表實現的叫做鏈式棧。


下面我使用java數組來實現一下棧效果。


/**
 * 使用數組來實現棧的相關功能
 */
public class ArrayStack {
    // 定義一個Object數組
    public Object[] objs;
    // 棧中存在的數量
    public int count;
    // 棧的大小
    public int stackSize;

    /**
     * 初始化
     *
     * @param stackSize
     */
    public ArrayStack(int stackSize) {
        this.stackSize = stackSize;
        this.objs = new Object[stackSize];
        this.count = 0;
    }

    /**
     * 入棧操作
     *
     * @param obj
     */
    public boolean push(Object obj) {
        // 如果棧中的數據已經滿了,需要擴容數組,擴容數組爲原來的2倍
        if (count == stackSize) {
            objs = Arrays.copyOf(objs, stackSize * 2);
            objs[count] = obj;
            count++;
            stackSize = objs.length;
        } else {
            objs[count] = obj;
            count++;
        }
        return true;
    }

    /**
     * 出棧操作
     */
    public Object pop() {
        if (count == 0) {
            return "";
        } else {
            Object obj = objs[count - 1];
            count--;
            return obj;
        }
    }
}

注意:使用數組實現棧時主要關注數組的擴容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章