栈是一种后入先出(LIFO)的数据结构,数据只能在栈顶添加或者删除,所以操作很快,容易实现。将从3个方面来深入理解和使用栈这种数据结构。
- 抽象数据类型定义
- 栈的JS实现
- 解决实际问题
抽象数据类型定义
属性及方法 | 作用 |
---|---|
push() | 入栈 |
pop() | 出栈 |
peek() | 显示栈顶元素 |
dataStore | 存储数据 |
top | 记录栈的长度和位置 |
栈的JS实现
使用构造器调用模式,这是一套类似类的对象构建语法,通过在函数前面加上
new
调用,同时this
会绑定到这个新对象上。
//Stack.js
//Stack对象定义
function Stack(){
this.dataStore = [];
this.pop = pop;
this.push = push;
this.peek = peek;
this.clear = clear;
this.length = length;
this.top = 0;
}
function push(element){
this.dataStore[this.top++] = element;
}
function pop(){
return this.dataStore[--this.top]
}
function peek(){
return this.dataStore[this.top-1]
}
function length(){
return this.top;
}
function clear(){
this.top = 0;
}
//实例化Stack对象
var oneStack = new Stack();