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

155 阅读1分钟

简介

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

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

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

clipboard.png

代码实现

让我们在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());
    };
    

    }