栈 和 堆
栈是后进先出 比如图书馆放书, 橱柜里的碗
堆是先进先服务 比如排队购物买东西
栈是一种遵从后进先出( LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。在现实生活中也能发现很多栈的例子。例如,下图里的一摞书或者餐厅里堆放的盘子, 栈也被用在编程语言的编译器和内存中保存变量、方法调用等。
创建栈
function Stack() {
let items = [];
// 向栈添加元素
this.push = function(element){
items.push(element);
};
this.pop = function(){
return items.pop();
};
}
let stack = new Stack();
stack.push(5);
ES6语法创建栈
class Stack {
constructor () {
this.items = []; //{1}
}
push(element){
this.items.push(element);
}
//其他方法
}
用栈解决问题
栈的实际应用非常广泛。在回溯问题中,它可以存储访问过的任务或路径、撤销的操作。 Java和C#用栈来存储变量和方
法调用,特别是处理递归算法时,有可能抛出一个栈溢出异常。