双端队列的基本实现【数据结构与算法—TypeScript 实现】
笔记整理自 coderwhy 『TypeScript 高阶数据结构与算法』课程
特性
本质:允许队列在两端进行 入队 和 出队 操作
设计
实现方式:基于 数组 实现
属性:
- data:存放队列元素
方法:
- enqueue(value):尾部入队
- deleteBack:尾部出队
- dequeue:头部出队
- addFront(value):头部入队
- peek:查看头部元素
- isEmpty:判断队列是否为空
- size:获取队列长度
具体代码
class ArrayDeque<T> {
private data: T[] = [];
// 尾部入队
enqueue(value: T): void {
this.data.push(value);
}
// 头部入队
addFront(value: T): void {
this.data.unshift(value);
}
// 头部出队
dequeue(): T | undefined {
return this.data.shift();
}
// 尾部出队
deleteBack(): T | undefined {
return this.data.pop();
}
// 查看头部元素
peek(): T | undefined {
return this.data[0];
}
// 队列是否为空
isEmpty(): boolean {
return this.data.length === 0;
}
// 获取队列长度
get size(): number {
return this.data.length;
}
}
const arrayDequeue = new ArrayDeque<number>();
arrayDequeue.enqueue(123);
arrayDequeue.enqueue(234);
arrayDequeue.addFront(889);
console.log(arrayDequeue);
双端队列的基本实现【数据结构与算法—TypeScript 实现】的更多相关文章
- 数据结构----双端队列Dque
双端队列的概念与数据结构 deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. deque 特殊之处在于添加和删除项是非限制性的.可以在前面或后面 ...
- 22.1.23Manacher算法、双端队列、单调栈
22.1.23Manacher算法.双端队列.单调栈 1.Manacher算法 1)用途: Manacher算法用于解决类似求某个字符串中最长的回文子串.(回文就是正着读和倒着读一样的结构). 2)算 ...
- python 下的数据结构与算法---4:线形数据结构,栈,队列,双端队列,列表
目录: 前言 1:栈 1.1:栈的实现 1.2:栈的应用: 1.2.1:检验数学表达式的括号匹配 1.2.2:将十进制数转化为任意进制 1.2.3:后置表达式的生成及其计算 2:队列 2.1:队列的实 ...
- 自己动手实现java数据结构(四)双端队列
1.双端队列介绍 在介绍双端队列之前,我们需要先介绍队列的概念.和栈相对应,在许多算法设计中,需要一种"先进先出(First Input First Output)"的数据结构,因 ...
- 6.基本数据结构-双端队列(Deque)
一.双端队列(Deque) - 概念:deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. - 特性:deque 特殊之处在于添加和删除项是非限制 ...
- 用Python实现的数据结构与算法:双端队列
一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...
- 数据结构之双端队列(Deque)
1,双端队列定义 双端队列:其两端都可以入列和出列的数据结构,如下图所示,队列后面(rear)可以加入和移出数据,队列前面(front)可以加入和移出数据 双端队列操作: deque=Deque() ...
- 06 基本数据结构 - 双端队列(Deque)
一.双端队列(Deque) - 概念:deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. - 特性:deque 特殊之处在于添加和删除项是非限制 ...
- 六.基本数据结构-双端队列(Deque)
一.双端队列(Deque) - 概念:deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. - 特性:deque 特殊之处在于添加和删除项是非限制 ...
- Python实现的数据结构与算法之双端队列详解
一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...
随机推荐
- .Net之多语言配置
介绍 支持多语言使网站可以覆盖更广泛的受众. ASP.NET Core 提供的服务和中间件可将网站本地化为不同的语言. 本次示例环境:vs2019.net5 配置 无需引用Nuget包即可实现以下功能 ...
- 【转载】很遗憾,没有一篇文章能讲清楚ZooKeeper
作为分布式系统解决方案的 ZooKeeper,被广泛应用于多个分布式场景.例如:数据发布/订阅,负载均衡,命名服务,集群管理等等. 因此,ZooKeeper 在分布式系统中扮演着重要的角色,今天通过一 ...
- RC4算法:流密码算法的经典之作
一.RC4算法的起源与演变 RC4算法是由著名密码学家Ron Rivest在1987年设计的一种流密码算法,其名字来源于Rivest Cipher 4.RC4算法简单高效,被广泛应用于数据加密和网络安 ...
- C++串口通讯解决方案
这篇文章只是笔记性质,没有实际的原创内容,主要是做一下方案的备份. 串口通讯使用开源的 CSerialPort 类,我使用的是Windows版本分支: CSerialPort 跨平台 CSerialP ...
- k8s架构解析
Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署.扩展和管理容器化应用程序.Kubernetes由多个组件组成,每个组件都扮演着不同的角色.以下是Kubernetes中一些主要组 ...
- Ubuntu 22.04 源码安装ST-Link V2过程详解
一 首先安装依赖工具: A 安装预编译库: sudo apt-get install git make cmake libusb-1.0-0-dev B 安装gcc库: sudo apt-get in ...
- 小程序登录V2
参考:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801(通知) https:/ ...
- [置顶]
drools规则引擎因为内存泄露导致的内存溢出
进入这个问题之前,先了解一下drools: 在很多行业应用中比如银行.保险领域,业务规则往往非常复杂,并且规则处于不断更新变化中,而现有很多系统做法基本上都是将业务规则绑定在程序代码中. 主要存在的问 ...
- 25_H.264编码
本文主要介绍一种非常流行的视频编码:H.264. 计算一下:10秒钟1080p(1920x1080).30fps的YUV420P原始视频,需要占用多大的存储空间? (10 * 30) * (1920 ...
- Java-求根号n
平方,开根号在java中是很简单的,Math.sqrt(double n)或者 Math.pow(double a, double b),求a的b次方.但是我们可以自己想想,这些方法到底是怎么实现的. ...