资讯专栏INFORMATION COLUMN

JavaScript数据结构与算法——队列

silenceboy / 2984人阅读

摘要:队列数据结构队列遵循先进先出,也称先来先服务原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的的末尾。

队列和栈非常类似,但是使用了不同的原则,而非后进先出,是先进先出。

1.队列数据结构

队列遵循FIFO(先进先出,也称先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的的末尾。队列示意图如下:

2.创建队列
// 创建一个类表示队列
function Queue() {
    // 使用数组作为存储队列的数据结构
    let items = [];
    // 下面声明队列一些可用的方法
    // 1.enqueue(elements) 向队尾添加一个或多个项
    this.enqueue = function(element) {
        items.push(element);
    }
    // 2.dequeue() 从队列移除元素 FIFO
    this.dequeue = function() {
        return item.shift();
    }
    // 3.front() 查看队列头元素
    this.front = function() {
        return items[0];
    }
    // 4.isEmpty() size() 检查队列是否为空
    this.isEmpty = function() {
        return items.length === 0;
    }
    this.size = function() {
        return items.length;
    }
    // 5.打印队列元素
    this.print = function() {
        console.log(items.toString())
    } 
}

使用Queue类

let queue = new Queue();
console.log(queue.isEmpty()); // true
// 添加元素
queue.enqueue("june");
queue.enqueue("jack");

queue.print(); // "june,jack"
console.log(queue.size()); // 2
// 删除元素
queue.dequeue();
queue.dequeue();
queue.print(); // ""
3.优先队列

实现一个有限队列,有两种选择:设置优先级,然后在正确的位置添加元素;或者用入列操作添加元素,然后按照他们的优先级移除他们。

function PriorityQueue() {
    let items = [];
    // 设置添加元素的类
    function QueueElement(element, priority) {
        this.element = element;
        this.priority = priority;
    }
    // 优先级添加
    this.enqueue = function(element, priority) {
        let queueElement = new QueueElement(element, priority);
        
        let added = false;
        // 遍原队列中的元素,如果新添加元素的优先级的值(优先级大,priority值小)小于当前遍历原始的优先级的值(即新添加元素优先级大于当前遍历元素的优先级),则在其前面添加新的元素
        for(let i=0; i
4.队列的应用——击鼓传花           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101688.html

相关文章

  • 学习JavaScript数据结构算法(一):栈队列

    摘要:之数组操作接下来就是数据结构的第一部分,栈。以字符串显示栈中所有内容方法的实现说明需要往栈中添加新元素,元素位置在队列的末尾。的前端乐园原文链接寒假前端学习学习数据结构与算法,栈与队列 本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列第二篇文章:学习JavaScript数据结构与算法(二):链表第三篇文章:学习JavaScript数据结构与算法(三):集合第...

    Flink_China 评论0 收藏0
  • [ JavaScript ] 数据结构算法 —— 队列

    摘要:而且目前大部分编程语言的高级应用都会用到数据结构与算法以及设计模式。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。 前言 JavaScript是当下最流行的编程语言之一,它可以做很多事情: 数据可视化(D3.js,Three.js,Chart.js); 移动端应用(React Native,Weex,AppCan,Flutter,Hybrid App,小程...

    Yi_Zhi_Yu 评论0 收藏0
  • JavaScript数据结构算法(二) —— 队列

    摘要:简介队列遵循的是先进先出的原则的一组有序的项。队列从尾部添加新元素,并从顶部移除元素,最新添加的元素必须排列在队列的末尾。它的想法来自于生活中排队的策略。队列不做任何变动。 简介 队列遵循的是FIFO(先进先出)的原则的一组有序的项。 队列从尾部添加新元素,并从顶部移除元素,最新添加的元素必须排列在队列的末尾。 它的想法来自于生活中排队的策略。顾客在付款结账的时候,按照到来的先后顺序排...

    xingqiba 评论0 收藏0
  • JavaScript数据结构算法》笔记——第4章 队列

    摘要:队列遵循原则的一组有序的项向队列尾部添加一个项移除队列的第一项返回队列中第一项,对队列本身不做修改判断队列是否为空返回队列包含的元素个数优先队列根据优先级添加项最小优先队列移除队列的第一项返回队列中第一项,对队列本身不做修改判断队列是否 队列遵循FIFO(First In First Out)原则的一组有序的项 let Queue = (function () { let it...

    callmewhy 评论0 收藏0
  • 学习数据结构算法之栈队列

    摘要:于是翻出了机房里的这本学习数据结构与算法开始学习程序员的基础知识。这本书用了我最熟悉的来实现各种数据结构和算法,而且书很薄,可以说是一本不错的入门教程。队列在头部删除元素,尾部添加元素。 本系列所有文章:第一篇文章:学习数据结构与算法之栈与队列第二篇文章:学习数据结构与算法之链表第三篇文章:学习数据结构与算法之集合第四篇文章:学习数据结构与算法之字典和散列表第五篇文章:学习数据结构与算...

    pingan8787 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<