栈数据结构
栈是一种遵从后进先出原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称为栈顶,另一端就叫栈底。在栈内,锌元素都靠近栈顶,救援都接近栈底
类似栈的例子
栈也被用在编程语言你的编译器和内存中保存变量、方法调用等,也被用于浏览器历史记录(浏览器的返回按钮)
创建一个基于数组的栈
- 创建一个类表示栈
- 栈内应该有一些方法
- 添加一个新元素到栈顶
- 删除栈顶元素,同时返回这个被删除的元素
- 返回栈顶元素
- 判断栈内是否为空
- 移出栈内所有元素
- 返回栈内元素个数
创建一个类表示栈
class Stack{
constructor(){
this.items = [];
}
}
添加一个新元素到栈顶
push(el){
return this.items.push(el)
}
移除栈顶一个元素
pop(){
const result = this.items[this.size() - 1]
this.items.pop()
return result
}
查看栈顶元素
peek(){
return this.items[this.size() - 1]
}
判断栈内是否为空
isEmpty(){
return this.size() === 0
}
清空栈内元素
clear(){
return this.items = [];
}
返回栈内元素个数
size(){
return this.items.length;
}
创建一个基于对象的Stack类
其需要的方法个数不变,需要改变方法内部代码
创建一个类表示栈
class Stack{
constructor(){
this.items = {};
this.count = 0;
}
}
添加一个新元素到栈顶
push(el){
this.items[this.count] = el;
this.count++;
}
移除栈顶一个元素
pop(){
if(this.isEmpty()){
return undefined
}
this.count--;
const result = this.items[this.count]
delete this.items[this.count]
return result;
}
查看栈顶元素
peek(){
return this.items[this.size() - 1]
}
判断栈内是否为空
isEmpty(){
return this.size() === 0
}
清空栈内元素
clear(){
this.items = {};
this.count = 0
}
返回栈内元素个数
size(){
return this.count;
}