博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript 实现数据结构 - 队列
阅读量:4991 次
发布时间:2019-06-12

本文共 1559 字,大约阅读时间需要 5 分钟。

队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。

1.构造函数构建队列函数

let  Queue = (function () {      const items = new WeakMap();      const weak = {};     return function(){            items.set(weak, []);             this. enqueue = function() {  //向队列添加一个或多个元素                let arr = items.get(weak);                for(let i = 0,length = arguments.length;i

2.用ES6语法实现队列函数

let  Queue = (function () {      const items = new WeakMap();     class Queue1 {          constructor(){             items.set(this,[]);          }          enqueue () {  //向队列添加一个或多个元素             let arr = items.get(this);             for(let i = 0,length = arguments.length;i

3.优先队列

元素的添加和移除是基于优先级的。一个现实的例子就是机场登机的顺序。头等舱和商务舱乘客的优先级要高于经济舱乘客。在有些国家,老年人和孕妇(或带小孩的妇女)登机时也享有高于其他乘客的优先级。另一个现实中的例子是医院的(急诊科)候诊室。医生会优先处理病情比较严重的患者。通常,护士会鉴别分类,根据患者病情的严重程度放号。实现一个优先队列,有两种选项:设置优先级,然后在正确的位置添加元素;或者用入列操作添加元素,然后按照优先级移除它们。

let PriorityQueue = (function() {     const items = new WeakMap();     const weak = {};    function QueueElement (element, priority){        this.element = element;         this.priority = priority;         }     return function(){    items.set(weak, []);     this.enqueue = function(element, priority){         let arr = items.get(weak);        let queueElement = new QueueElement(element, priority);         let added = false;         for (let i=0; i

4.javascript 任务队列

当我们在浏览器中打开新标签时,就会创建一个任务队列。这是因为每个标签都是单线程处理所有的任务,它被称为事件循环。浏览器要负责多个任务,如渲染HTML,执行JavaScript代码,处理用户交互(用户输入、鼠标点击等),执行和处理异步请求。

转载于:https://www.cnblogs.com/honkerzh/p/10558214.html

你可能感兴趣的文章
JVM(1)——IDEA启动分配内存大小及GC日志打印
查看>>
oracle 批量更新之update case when then
查看>>
text3
查看>>
自己写的连击文字特效
查看>>
【Android】eclipse打不开的解决办法和“Jar mismatch! Fix your dependencies”的解决
查看>>
Mysql查询某字段值重复的数据
查看>>
Java 自学笔记-基本语法3setOut()方法设置新的输出流
查看>>
cocos2d-JS 模块 anysdk 概述
查看>>
docker镜像mac下保存路径
查看>>
docker使用 命令
查看>>
关于C#操作INI文件的总结
查看>>
ZeptoLab Code Rush 2015 B. Om Nom and Dark Park
查看>>
ctci1.2
查看>>
[译]RabbitMQ教程C#版 - 路由
查看>>
升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署
查看>>
Android:onNewIntent()触发机制及注意事项
查看>>
珠宝公司之感想
查看>>
项目问题
查看>>
scss侦听并压缩
查看>>
我有接口文档, 你有酒吗?
查看>>