资讯专栏INFORMATION COLUMN

JavaScript的数据结构与算法(二) —— 队列

xingqiba / 1635人阅读

摘要:简介队列遵循的是先进先出的原则的一组有序的项。队列从尾部添加新元素,并从顶部移除元素,最新添加的元素必须排列在队列的末尾。它的想法来自于生活中排队的策略。队列不做任何变动。

简介

队列遵循的是FIFO(先进先出)的原则的一组有序的项。

队列从尾部添加新元素,并从顶部移除元素,最新添加的元素必须排列在队列的末尾。

它的想法来自于生活中排队的策略。顾客在付款结账的时候,按照到来的先后顺序排队结账,先来的顾客先结账,后来的顾客后结账。

代码实现

让我们在js提供的数组方法上,简单实现一个队列(Queue)类:

enqueue(): 向队列尾部插入一个元素

dequeue(): 移除队列第一个元素

front(): 返回队列第一个元素

isEmpty(): 判断队列是否为空

clear(): 移除队列所有元素

size(): 返回队列元素个数

function Queue() {
  var items = [];
  
  this.enqueue = function(element){//向队列尾部添加一个(或是多个)元素
    items.push(element);
  };
  
  this.dequeue = function(){//移除队列的第一个元素,并返回被移除的元素
    return items.shift();
  };
  
  this.front = function(){//返回队列的第一个元素——最先被添加的,也将是最先被移除的元素。队列不做任何变动。(不移除元素,只返回元素信息。与stack的peek方法类似)
    return items[0];
  };
  
  this.isEmpty = function(){//如果队列内没有任何元素就返回true,否则返回false
    return items.length == 0;
  };
  
  this.clear = function(){//移除队列里的所有元素
    items = [];
  };
  
  this.size = function(){//返回队列里的元素个数
    return items.length;
  };
  
  this.print = function(){//打印                                                                                                                                                                                                                             
    console.log(items.toString());
  };
 }

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

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

相关文章

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

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

    Flink_China 评论0 收藏0
  • 算法系列——JavaScript中广度优先搜索思想实现

    摘要:散列表上面的地图向我们展示了如何用广度优先搜索的思想找到北京到广州的最短路线。在广度优先搜索中,我们需要用到队列的这种思想来实现查找。建立了下面这个模型武汉广州西藏上海上海武汉广州代码完整实现,利用递归和广度优先搜索的思想实现。 什么是广度优先搜索? 如果只是是背概念,幼儿园的小朋友都能背下来念给你听。 假设看这篇文章的都和我一样是个前端工程师,我们要从广度优先搜索(BFS)中学到什么...

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

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

    pingan8787 评论0 收藏0
  • 前端进击巨人():栈、堆、队列、内存空间

    摘要:中有三种数据结构栈堆队列。前端进击的巨人一执行上下文与执行栈,变量对象中解释执行栈时,举了一个乒乓球盒子的例子,来演示栈的存取方式,这里再举个栗子搭积木。对于基本类型,栈中存储的就是它自身的值,所以新内存空间存储的也是一个值。 面试经常遇到的深浅拷贝,事件轮询,函数调用栈,闭包等容易出错的题目,究其原因,都是跟JavaScript基础知识不牢固有关,下层地基没打好,上层就是豆腐渣工程,...

    edgardeng 评论0 收藏0

发表评论

0条评论

xingqiba

|高级讲师

TA的文章

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