2

简介

队列遵循的是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());
  };
 }

an_l
453 声望27 粉丝

代码胜于雄辩