世上焉有无双数,万般玄机谁可知,我本杯中一浮游,何来笑谈青莲久
栈,从解字上来说,是木戋,讲的是古人在悬崖峭壁上铸造可用于行走的通道,那时候人们利用栈来出入山,并在悬崖上进行开采与挖掘工作,由于栈一般会比较窄,所以先进入的人总要等到他后面的人出去了,他才能出去,这种说法有点像杯子中的乒乓球,先放到杯子中的总是最后一个拿出来,这也是为什么这种数据结构的命名叫栈,堆栈的说法也是如此。所以我们需要一个东西来做容器,并且这个容器支持数据的存入,只是在取出的时候,只能从最后放入的开始取
f
unction Stack() {
this.length=0;
this.Data=[];
//this.push=push;
//this.pop=pop;
//this.shift=shift;
}/*
*向数据中写入数据,并且增加其长度
*/
Stack.prototype.push = function(ele) {
// body...
this.Data[this.length]=ele;
this.length++;
return true;
};/*
*判断数据的长度,如果存在数据,就将最外层的取出,并且将长度缩短
*/
Stack.prototype.pop=function(ele){
// body...
if(this.length==0){
return -1;
}else{
var out=this.Data.splice(this.length-1,1);
this.length--;
return out;
}
}/*
*只获取最外层数据
*/
Stack.prototype.peek=function(){
if(this.length==0){
return -1;
}else{
return this.Data[this.length-1];
}
}
TEST:
var a=new Stack();
a.push(1);
a.push("H");
a.push(2);
a.push("O");
console.log(a.pop());
OUTPUT: O
基本实现与逻辑都还是很容易明白,比较难的是如何对抽象逻辑进行具现,一般的用处有如回文判断,X缀表达式等,当然也可以用来做堵塞处理,想像一下,用户被勾引到了一个页面里,发现什么都没有,想要登出却需要排队,等待后来的用户先登出,是不是感觉应用面很广呢,没事去堵那么几个人~
作者:山鬼Sakura
链接:https://juejin.im/post/5a07b3136fb9a04514638461
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。