前端面试宝典——栈

来源:互联网 发布:淘宝上买c10a配件违法 编辑:程序博客网 时间:2024/06/16 21:35

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

示意图如下:

这里写图片描述

栈的创建

在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();//cstack.size()//2stack.peek();//bstack.isEmpty;//falsestack.clear();//stack.size();//0