js基础算法之复现双端队列

双端队列和普通队列的区别就是 双端队列允许从后方移除或者添加数据,最常见的就是存储一些指令时使用,比如购票时,从前方的用户在购物完成后可以无需排队去问一些简单的问题,最后方的用户如果不想等待可以直接离开。
这是昨天的简单队列

class Queue {
	constructor(){
				this.queue= {},
				this.index = 0,
				this.top = 0

		}
		return_one() {
			if (this.index > this.top) {
				return this.queue[this.top]
			}
			return undefined
		}
		shift() {
			if (this.index > this.top) {
				let up = this.queue[this.top]
				delete this.queue[this.top]
				this.top++
				return up
			}
			return undefined
		}
		add(value) {
			this.queue[this.index] = value
			this.index++
			return value
		}
		toString(){
			let x = []
			for(let i in this.queue ){
				x.push(this.queue[i])
			}
			return x
		}
		toNumber(){
			return this.index-this.top
		}

}

双端队列就要在其基础上添加返回最后一项和删除最后一项的功能
删除功能

pop(){
	this.index-=1
	let x = this.queue[this.index]
	delete this.queue[this.index]
	return x
}

返回最后一项功能

lastint(){
	return this.queue[this.index-1]
}

所有代码

class Queue {
	constructor() {
		this.queue = {},
			this.index = 0,
			this.top = 0

	}
	return_one() {
		if (this.index > this.top) {
			return this.queue[this.top]
		}
		return undefined
	}
	shift() {
		if (this.index > this.top) {
			let up = this.queue[this.top]
			delete this.queue[this.top]
			this.top++
			return up
		}
		return undefined
	}
	add(value) {
		this.queue[this.index] = value
		this.index++
		return value
	}
	toString() {
		let x = []
		for (let i in this.queue) {
			x.push(this.queue[i])
		}
		return x
	}
	toNumber() {
		return this.index - this.top
	}
	pop(){
		this.index-=1
		let x = this.queue[this.index]
		delete this.queue[this.index]
		return x
	}
	lastint(){
		return this.queue[this.index-1]
	}

}

ok 队列完成! 后边我会找时间把平时做的算法题分享出来,恳请各位大佬能够给一些建议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自信小老头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值