栈是一种操作受限的线性结构,限定只能在尾部进行插入和删除操作。
- 尾部被称为栈顶,而头部称为栈底。
- 向一个栈插入新元素又称作进栈、入栈或压栈。
- 从一个栈删除元素又称作出栈或退栈。
- 这种受限的操作方式让栈元素的入栈出栈遵循一种特殊的原则——先进后出(First In Last Out,FILO)。
栈的应用非常广泛,例如:
- 浏览器的历史记录,它的前进、后退功能就是一个栈操作;
- V8 中的函数执行过程采用的栈结构;
- JavaScript 在捕获代码异常时,详细信息会以调用栈的形式打印。
栈可以通过数组来实现,下面的代码实现了一个栈结构:
function Stack(){
var _stack = [];
// 入栈
this.push = function (element) {
_stack.push(element);
}
// 出栈
this.pop = function () {
return _stack.pop();
}
// 栈顶元素
this.top = function () {
return _stack[_stack.length-1];
}
// 判空
this.isEmpty = function () {
return _stack.length === 0;
}
// 栈大小
this.size = function () {
return _stack.length;
}
// 清空栈
this.clear = function () {
_stack = [];
}
}
参考:《前端高手进阶》