当前位置: 首页 > news >正文

JS实现队列的数据结构

创建queue.ts

/*** 队列*/
export default class Queue<T> {private items: object;private count: number;private header: number;constructor() {this.items = {};this.count = this.header = 0;}/*** 入队列* @param element* @returns 当前队列的数量*/enqueue(element: T): number {// eslint-disable-next-line @typescript-eslint/ban-ts-comment// @ts-ignorethis.items[this.count++] = element;return this.size();}/*** 出队列* @returns 出队列的元素*/dequeue(): T | undefined {if (this.isEmpty()) return undefined;// eslint-disable-next-line @typescript-eslint/ban-ts-comment// @ts-ignoreconst res = this.items[this.header];// eslint-disable-next-line @typescript-eslint/ban-ts-comment// @ts-ignoredelete this.items[this.header];this.header++;return res;}/*** 查看队首的元素* @return 队首位的元素*/peek(): T | undefined {if (this.isEmpty()) return undefined;// eslint-disable-next-line @typescript-eslint/ban-ts-comment// @ts-ignorereturn this.items[this.header];}/*** 返回队列中元素的个数* @returns count*/size(): number {return this.count - this.header;}/*** 返回队列是否为空* @returns boolean*/isEmpty(): boolean {return this.size() === 0;}/*** 清空队列*/clear(): void {this.items = {};this.header = this.count = 0;}/*** 返回队列元素组成的字符串* @returns string*/toString(): string {if (this.isEmpty()) return "queue is empty!";// eslint-disable-next-line @typescript-eslint/ban-ts-comment// @ts-ignorelet res = this.items[this.header].toString();for (let i = this.header + 1; i < this.count; i++) {// eslint-disable-next-line @typescript-eslint/ban-ts-comment// @ts-ignoreres = `${res}, ${this.items[i].toString()}`;}return res;}
}

在需要的文件当中使用

const queue = new Queue();queue.enqueue("入队一个元素")
http://www.lryc.cn/news/95541.html

相关文章:

  • title: 用 LangChain 构建基于资料库的问答机器人(四):通过代理使用外部工具
  • 使用 CSS 自定义属性
  • Unity 性能优化一:性能标准、常用工具
  • 【http长连接+池化】
  • opencv-20 深入理解HSV 色彩空间(通过指定,标记颜色等来拓展ROI区域)
  • python调用arcgis功能一例
  • Spring MVC 是什么?
  • Rust操作MySQL
  • JAVA面试总结-Redis篇章(二)——缓存击穿
  • Spring相关知识点
  • Nginx专题--反向代理(未完成)
  • 什么是搜索引擎?2023 年搜索引擎如何运作?
  • Spring系列一:spring的安装与使用
  • Ubuntu--科研工具系列
  • 【压测指南|压力测试核心性能指标及行业标准】
  • spark-submit --files
  • 应该选云服务器还是物理服务器
  • 【iOS】动态链接器dyld
  • RocketMQ集成Springboot --Chapter1
  • 【Unity3D日常开发】Unity3D中比较string字符串的常用方法
  • vue3+ts+element-plus 之使用node.js对接mysql进行表格数据展示
  • 华为eNSP:isis配置跨区域路由
  • IUPAC和SMILES的相互转换
  • 逻辑回归概述
  • React 框架下自己写一个braft编辑器,然后将编辑器内容展示在网页端
  • 基于DNN深度学习网络的OFDM+QPSK信号检测算法matlab仿真
  • 学生管理系统-05封装选项卡
  • 关于一些C++、Qt、Python方面的术语
  • k8s中强制删除pv
  • 60寸透明屏的透明度怎么样?