JavaScript/LimitedQueue.js

提供: MonoBook
< JavaScript
2017年6月10日 (土) 04:16時点における103.22.200.204 (トーク)による版 (ページの作成:「容量上限到達でエンキューが無視されるキュー。いわゆるパチンコの「保留」みたいなもの。 <source lang="javascript"> function Lim...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

容量上限到達でエンキューが無視されるキュー。いわゆるパチンコの「保留」みたいなもの。

function LimitedQueue(){

  var queue  = [];
  var offset = 0;
  var limit = 4;

  this.getLength = function(){
    return (queue.length - offset);
  }

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

  this.isLimit = function(){
    return (this.limit <= this.getLength());
  }

  this.enqueue = function(item){
    if (this.isLimit()) return false;
    queue.push(item);
    return true;
  }

  this.dequeue = function(){
    if (queue.length == 0) return undefined;

    var item = queue[offset];

    if (++ offset * 2 >= queue.length){
      queue  = queue.slice(offset);
      offset = 0;
    }
    return item;
  }

  this.peek = function(){
    return (queue.length > 0 ? queue[offset] : undefined);
  }
}