數據結構(JavaScript)

一、棧:後入先出()

 

 棧結構實現:

    function Stack() {
        var items = []; // 使用私有變量,避免被外部操作
        // push 棧頂添加元素
        this.push = function(ele) {
            items.push(ele);
        }
        // pop 移除棧頂元素 需返回移除的元素 因爲可能要用到
        this.pop = function() {
            return items.pop();
        }
        // peek 檢查棧頂
        this.peek = function() {
            return items[items.length - 1];
        }
        // isEmpty 檢查棧是否爲空
        this.isEmpty = function() {
            return items.length == 0;
        }
        // clear 清除棧
        this.clear = function() {
            items = [];
        }
        // size 獲取棧大小
        this.size = function() {
            return items.length;
        }
        // getItems 檢查items
        this.getItems = function() {
            return items;
        }
    }    

    // 使用棧
    var stack = new Stack();
    stack.push(1);
    stack.push(2);
    stack.push(3);
    console.log(stack.getItems());
    // stack.pop(); // 使用pop會使整個數組改變,上方的打印也會受影響
    console.log(stack.peek());
    console.log(stack.isEmpty());
    console.log(stack.size());
    stack.clear()
    console.log(stack.getItems());

使用案例:十進制轉二進制 

思路:使用餘數法 ,將所有餘數依次放入棧中,棧頂爲最後剩餘的數,最後依次pop棧中

 

實現:

 

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