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

<script>
        //创建一个队列
        function Queue(){
            let items = [];
            //向队尾添加一个新的项
            this.enqueue = function(element){
                items.push(element)
            }

            //移除队列第一个项,并返回被移除的元素 dequeue
            this.dequeue = function(){
                return items.shift();
            }

            this.front = function(){
                return items[0];
            }

            this.isEmpty = function(){
                return items.length === 0;
            }

            this.size = function(){
                return items.length;
            }
        }

        //使用
        // var queue = new Queue();

        //循环队列
        //游戏击鼓传花
        function flowersGama(nameList,number){
            var queue = new Queue();
            for(let i=0;i<nameList.length;i++){
                queue.enqueue(nameList[i]);
            }
            var failers = ‘‘;
            while(queue.size()>1){
                for(let i=0;i<number;i++){
                    queue.enqueue(queue.dequeue());
                }
                failers = queue.dequeue();
                console.log(failers + ‘被淘汰了‘);
            }
            return queue.dequeue();
        }
        var names = [‘John‘,‘Jack‘,‘Camila‘,‘Ingrid‘,‘Carl‘];
        var winner = flowersGama(names, 7);
        console.log(‘胜利者:‘ + winner); 

        //优先队列

        function PriorityQueue(){
            let items = [];

            function QueueElement(element,priority){
                this.element = element;
                this.priority = priority;
            }
            //优先队列插入
            this.enqueue = function(element,priority){
                var queueElement = new QueueElement(element,priority);
                if(this.isEmpty()){
                    items.push(queueElement);
                }else{
                    var added = false;
                    for(let i=0;i<items.length;i++){
                        if(queueElement.priority<items[i].priority){
                            items.splice(i,0,queueElement);
                            added = true;
                            break;
                        }
                    }
                    if(!added){
                        items.push(queueElement);
                    }
                }
            }

            this.isEmpty = function(){
                return items.length === 0;
            }

            this.print = function(){
                console.log(items)
            }
        }
        var priorityQueue = new PriorityQueue();
        priorityQueue.enqueue("John", 2);
        priorityQueue.enqueue("Jack", 1);
        priorityQueue.enqueue("Camila", 1);
        priorityQueue.print();
    </script>

原文地址:https://www.cnblogs.com/huangmin1992/p/10415230.html

时间: 2024-10-06 01:31:31

js数据结构与算法——队列的相关文章

javascript数据结构与算法---队列

队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出).在栈中,最后入栈的元素反而被优先处理.我们现在可以把队列想象对我们去餐馆吃饭的情景,很多人排队吃饭,排在最前面的人先打饭.新来的人只能在后面排队.直到轮到他们为止. 一:对队列的操作 队列有2种主要的操作,向队尾中插入新元素enqueue()方法和删除队列中的队首的元素的dequeue()方法,另外我们还有一个读取队头的元素,这个方法我们可以叫front()方法.该

JavaScript数据结构和算法----队列

前言 队列和栈很像,只是用了不同的原则.队列是遵循先进先出(FIFO)原则的一组有序的的项,队列在尾部添加新元素,从顶部移除元素.最新添加的元素必须必须排队在队列的,末尾.可以想象食堂排队买饭的样子. 一.创建队列 1.创建一种数据结构来保存队列里面的数据,这里选择数组 2.声明一些栈的方法 enqueue(element(s)) : 添加一个或一些元素到队列的末尾 dequeue() : 移除队列第一个的元素(就是排队在最前面的),同时返回被移除的元素. front() : 返回队列第一个的元

数据结构与算法-----队列篇

队列 1.基本特征:先进先出 2.基本操作:从后端(rear)压入(push),从前端(front)弹出(pop) 3.实现要点:初始化空间.从后端指针压入,从前端指针弹出, 循环使用,判空判满 实践1 :使用C++语言实现队列类并进行数据示例演示 #include <iostream> using namespace std; class Queue { public: // 构造函数中分配内存空间 Queue (size_t size) : m_data (new int[size]),

js数据结构与算法存储结构

数据结构(程序设计=数据结构+算法) 数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合. 传统上,我们把数据结构分为逻辑结构和物理结构. 逻辑结构:是指数据对象中数据元素之间的相互关系,也是我们今后最需要关注和讨论的问题. 物理结构:是指数据的逻辑结构在计算机中的存储形式. 常用的数据结构有: 数组,队列(queue),堆(heap),栈(stack),链表(linked list ),树(tree),图(graph)和散列表(hash) 栈(stack):运算只在表的

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

队列结构可以使用数组来模拟,只需要设定头和尾的两个标记 参考自<啊哈> 1 # 按书中的代码会出现索引越界的问题(书中申请了超量的空间) 2 # 尝试令tai初始为len(q)-1则不会出错但少了最后一位 3 # 通过异常处理,捕获出界异常则直接跳出循环 4 def queue_demo1(q): 5 newq = [] 6 head = 0 7 tail = len(q) # 记录队列最后一位 8 9 while head < tail : 10 newq.append(q[head]

16. C#数据结构与算法 -- 队列

什么是队列,所谓的队列是队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的,线性表.把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front).当对列中没有数据元素时称为空对列(Empty Queue).队列通常记为:Q= (a1,a2,-,an),Q是英文单词queue的第 1 个字母.a1为队头元素,an为队尾元素.这n个元素是按照a1,a2,-,an的次序依次入队的,出对的次序与入队相同,a1第一个出队,an最后一个出队.所以,对列的操作是按

【4】学习JS 数据结构与算法笔记

第一章 JS 简介 1. 环境搭建的三种方式 1. 下载浏览器 2. 使用 Web 服务器 ( XAMPP ) 3. 使用 Node.js 搭建 Web 服务器 4. 代码地址>> 2. JS 语法

[数据结构与算法] : 队列

头文件 1 typedef int ElementType; 2 3 #ifndef _QUEUE_H_ 4 #define _QUEUE_H_ 5 6 struct QueueRecord; 7 typedef struct QueueRecord *Queue; 8 9 int IsEmpty(Queue Q); 10 int IsFull(Queue Q); 11 Queue CreateQueue(int MaxElements); 12 void DisposeQueue(Queue

js数据结构与算法——集合

<script> function Set(){ var items = {};//使用对象表示集合,因为js对象不允许一个键指向两个不同的值,保证集合里面的匀速唯一性 this.add = function(value){ //向集合添加一个新的项 if(!this.has(value)){ items[value] = value; return true; } return false; } this.remove = function(value){ //从集合移除一个值 if(thi