javascript实现数据结构的栈

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类

这里我们已经基本实现了一个栈所需的功能。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值