构造函数:
function Stack () {
this.dataStore = [];
this.top =0;
this.push =push;
this.pop =pop;
this.peek =peek;
this.clear =clear;
this.length =length;
}
push:
function push (element) {
this.dataStore[this.top++] =element;
}
pop:
function pop(){
return this.dataStore[--this.top]; /* 这个函数始终看不懂,为什么不是返回this.top 而是自减一个1 这样返回的难道不是栈顶下的第一个元素吗*/
}
巴扎黑2017-04-10 16:43:23
stack为后进先出
初始化的时候top值为0
那么你push的时候
function push (element) {
this.dataStore[this.top++] =element;
}
++操作符后置
等价为
function push (element) {
this.dataStore[this.top] =element;
this.top=this.top+1;
}
添加完一个元素后,top值为1
那么pop操作为从尾部弹出最后一个元素
function pop(){
return this.dataStore[--this.top];
}
--操作符前置
等价为
function pop(){
this.top=this.top-1;
return this.dataStore[this.top];
}
top值为0,就是弹出刚添加的元素
如果top为N
那么push完了后top值为N+1
pop完了后 top为N-1
top的值始终和stackpush/pop完了后元素的长度保持一致
top>=0