提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Js实现栈
一、栈的特征
栈是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
二、代码实现
1.使用Es6的class和Array来简单实现一下:
class Stack{
constructor(){
this.stack = []
}
//入栈
append(element){
this.stack.push(element)
}
//出栈
pop(element){
return this.stack.pop()
}
//栈的长度
size(){
return this.stack.length
}
//是否是空栈
isEmpty(){
return this.size() === 0
}
//打印整个栈的值
toValue(){
console.log(this.stack)
}
}
2.继承的写法
//继承的写法
function Stack(){
this.stack = []
Stack.prototype.append = function(element){
this.stack.push(element)
}
Stack.prototype.pop = function(){
return this.stack.pop()
}
Stack.prototype.size = function(){
return this.stack.length
}
Stack.prototype.isEmpty = function(){
return this.size() === 0
}
Stack.prototype.toValue = function(){
console.log(this.stack)
}
}
3.测试代码
const stack = new Stack();
console.log("stack",stack)
stack.append("Hello")
stack.append("World")
console.log(stack.pop())
stack.toValue()
总结
在js里面我们除了能用数组来实现栈,我们也可以使用链表来实现栈这种数据结构