JavaScript棧

白穆羽發表於2018-09-20

棧是一種遵從後進先出(LIFO)原則的有序集合。

新新增的或待刪除的元素都儲存在棧的末尾,稱作棧頂,另一端就叫棧底。


我們在這裡先定義一個棧:

function Stack(){
    
    let items = [];//儲存棧
    
     //新增一個或多個元素到棧頂
    this.push = function(element){
        items.push(element)
    }
    
    //移除棧頂的元素,並且返回被移除的元素
    this.pop = function(){
        return items.pop()//pop方法有返回值
    }
    
    //返回棧頂的元素,不做任何操作
    this.peek = function(){
        return items[items.length-1];
    }
    
    //檢測棧裡是否有元素,沒有true,有false
    this.isEmpty = function(){
        return items.length === 0;
    }
    
    //清空棧
    this.clear = function(){
        items = []
    }
    
    //返回棧裡的元素個數
    this.size = function(){
        return items.length;
    }
}

在上面我們已經定義好了一個棧,現在我們來呼叫一下這個棧:

let stack = new Stack();
console.log("stack棧是否為空:"+stack.isEmpty());//true

stack.push(5);//(壓棧)
stack.push(10);
stack.push(15);
stack.push(20);

console.log("stack棧頂元素:"+stack.peek())//20

console.log("stack棧長度:"+stack.size())//4

stack.pop();//刪除棧頂元素(出棧)

console.log("stack棧頂元素:"+stack.peek())//15

console.log("stack棧是否為空:"+stack.isEmpty());//false

stack.clear();

console.log("stack棧是否為空:"+stack.isEmpty());//true


通過上述的方法,我們就能夠比較明顯的看出來棧的效果啦


6efab1869072f77cc579de71871a9af95bee2342


相關文章