队列优先级

122 阅读1分钟

队列的优先级

    function PriorityQuene() {
    function QueneElement(element, priority) {
      this.priority = priority
      this.element = element
    }
  }
  this.items = []
  PriorityQuene.prototype.enquene = function (element, priority) {
    var queneElment = new QueneElement(element, priority)
    if (this.items.length == 0) {
      this.items.push(queneElment)
    } else {
      for (var i = 0; i < items.length; i++) {
        var added = false
        if (queneElment.priority < this.items[i].priority) {
          this.items.splice(i, 0, queneElment)
          added = true
          break
        }
        if (!added) {
          this.items.push(queneElment)
        }
      }
    }
  }
  this.item = []
  // 删除第一个元素
  PriorityQuene.prototype.dequeue = function () {
    //  return this.item.pop()   pop是删除队列尾部的元素
    return this.item.shift()
  }
  // 显示第一个元素
  PriorityQuene.prototype.front = function () {
    return this.item[0]
  }
  // 判断队列是否有参数
  PriorityQuene.prototype.isEmpty = function () {
    return this.item.length == 0
  }
  // 队列的长度
  PriorityQuene.prototype.size = function () {
    return this.item.length
  }
  // 将队列内的数据用字符串显示出来
  PriorityQuene.prototype.toString = function () {
    var result = ''
    for (var i = 0; i < this.item.length; i++) {
      result += this.item[i].element + '--' + this.item[i].priority + '--'
    }
    return result
  }
  var pq = new PriorityQuene()

  pq.enquene = ('cba', 100)
  pq.enquene = ('nab', 200)
  pq.enquene = ('qwe', 333)
  pq.enquene = ('asd', 444)
  pq.enquene = ('zxc', 555)
  console.log(pq);
  alert(pq)