JavaScript数据结构——栈

995 阅读1分钟

栈是一种先进后出的结构,新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端叫做栈底。

示意图如下:

这里写图片描述

栈的创建

在JavaScript生成栈,一般使用数组来形成。

var items=[];

栈的方法

栈一般会有下列几种方法:

  • push:元素入栈
  • pop:元素出栈
  • peek:返回栈顶元素
  • isEmpty:判断栈是否为空
  • clear:清除栈中所有元素
  • size:返回栈中元素个数

push

元素入栈可以直接使用数组原生的push方法

this.push=function(item){
    items.push(item)
}

pop

元素出栈可以直接使用数组原生的pop方法

this.pop=function(){
    return items.pop();
}

peek

栈是先入后出结构,所以栈顶元素,为数组的最后一个元素

 this.peek=function(){
    return items[items.length-1]
}

isEmpty

判断栈是否为空,只需要判断数组长度是否为0

this.isEmpty=funciton(){
    return items.length==0;
} 

clear

清空栈只需要将数组置空就可以了

this.clear=function(){
    items=[];
}

size

栈的大小就是返回数组长度

this.size=function(){
    return items.length;
}

完整代码如下:

function Stack(){
    var items=[];
    this.push=function(item){
        items.push(item)
    }
    this.pop = function(){
        return items.pop();
    };
    this.peek = function(){
        return items[items.length-1];
    };
    this.isEmpty = function(){
        return items.length == 0;
    };
    this.size = function(){
        return items.length;
    };
    this.clear = function(){
        items = [];
    };
}

使用方法:

var stack=new Stack();

stack.push('a');
stack.push('b');
stack.push('c');

stack.pop();//c
stack.size()//2
stack.peek();//b
stack.isEmpty;//false
stack.clear();//
stack.size();//0