队列

队列 queue
一种先进先出的数据结构
三个操作:入列,出列,检查队列头(顶部)

 // 0 队列头 2队列尾巴
    // [0, 1, 2]
    class Queue {
      constructor() {
        this.arr = []
      }
      // 入列
      enqueue(item) {
        this.arr.push(item)
      }
      // 出列
      dequeue() {
        return this.arr.shift()
      }
      // 查看队列头
      front() {
        return this.arr[0]
      }
      // 大小
      size() {
        return this.arr.length
      }
      // 查看
      getArr() {
        return this.arr
      }
    }


    // 击鼓传花
    function DrumSpreading(tagertArr, num) {
      const queue = new Queue()
      queue.arr = tagertArr
      while (tagertArr.length > 1) {
        for (let index = 0; index < num-1; index++) {
          // 前num-1个先出列 再入列
          queue.enqueue(queue.dequeue(tagertArr[index]))
        }
        // 第num个 出列
        queue.dequeue(tagertArr[0])
      }
      return queue.getArr()
    }

    // DrumSpreading([1,2,3],3)

    // 优先级队列
    function PriorityQueue() {
      var items = []

      // 是否插入
      var isInsertion = false

      // 辅助类
      function QueueItem(element, priority) {
        // 元素
        this.element = element
        // 优先级
        this.priority = priority
      }
      
      this.enqueue = function(element, priority) {
        var queueItem = new QueueItem(element, priority)
        for (let index = 0; index < items.length; index++) {
          if (queueItem.priority > items[index].priority) {
            // console.log(11111,queueItem.priority,items[index].priority)
            console.log(items)
            items.splice(index,0,queueItem)
            isInsertion = true
            // break
          }
        }
        if(!isInsertion) {
          items.push(queueItem)
        }
      },
      this.getArr = function() {
        return items
      }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容