栈是一种遵从后进先出(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
通过上述的方法,我们就能够比较明显的看出来栈的效果啦