javascript实现栈
栈是一种遵循后进先出原则的有序集合,一般用在编程语言的编译器和内存中保存变量、方法调用等,也被用于浏览器历史记录。
创建一个基于数组的栈
首先创建一个类来表示栈。
class Stack {
constructor() {
this.items= [];
}
}
下面要实现栈的一些方法
push(element):添加一个新元素到栈顶。
pop():移除栈顶元素,同时返回被移除的元素。
peek():返回栈顶元素,不对栈进行修改。
isEmpty():返回栈是否为空。
clear():移除栈的全部元素。
size():返回栈内元素的个数。
向栈顶添加元素
push(element){
this.items.push(element)
}
移除元素
pop() {
return this.items.pop()
}
返回栈顶元素
peek() {
return this.items[this.items.length-1]
}
返回栈是否为空
isEmpty() {
return this.items.length === 0
}
同理我们也可以根据items的length获取栈内元素的个数
size() {
return this.items.length
}
移除站内的全部元素
想法是通过将items置为空数组来实现清除栈内的元素。
最初是有两种方案,一个是直接将[]赋值给items,即
clear (){
this.items = []
}
还有一种方法是将items的长度设为0,即
clear() {
this.items.length = 0
}
两种方法都就可以实现清除元素的功能,最初以为第二种方法仅操作数组长度,性能应高于第一种方法。但是经过超大量数据实验后,发现反而是第一种方法性能更优,具体原因将另写,这里就不具体说了
使用stack类
这里我们已经基本实现了一个栈所需的功能。