写点什么

数据结构队列

发布于: 2021 年 03 月 24 日

队列是一种特殊的线性表,遵循 FILFO(先进先出)的原则,队列在尾部添加元素,在顶部移除元素。最新添加的元素必须在队列末尾


队列特点


  • 先进先出

  • 在顶部删除

  • 在尾部添加


队列通常有以下方法


  • enqueue():向尾部添加一个或者多个元素

  • dequeue():移除队列第一个元素并返回移除元素

  • front():返回队列第一个元素,就是最先添加的那个元素

  • isEmpty:判断是否为空队列

  • size():返回队列元素个数


创建队列


const Queue = function () {  const item = []  class Queues {    // 添加元素 在末尾添加    enqueue(value) {      item.push(value)    }    //删除元素  在头部删除    pop(value) {      return item.shift(value)    }    // 返回栈顶元素    front() {      return item[0]    }    // 判断是否为空栈    isEmpty() {      return item.length === 0 ? true : false    }    //清除站内所有元素(clear)    clear() {      item = []    }    // 返回栈内元素个数(size)    size() {      return item.length    }    // 打印数组元素    print() {      console.log(item.toString())    }  }  return Queues}()const queue = new Queue()
复制代码

优先队列


// 优先队列const priorityQueue = function () {  const item = []  class Queue2 {    // 添加元素 根据优先级 决定添加位置 数字越大 优先级越小     enqueue(value, priority) {      let obj = { value, priority }      if (item.length !== 0) {        let control = false        for (let i = 0; i < item.length; i++) {          if (obj.priority < item[i].priority) {            item.splice(i, 0, obj)            control = true            break          }        }        control ? null : item.push(obj)      } else {        item.push(obj)      }    }    //删除元素  在头部删除    pop(value) {      return item.shift(value)    }    // 返回栈顶元素    front() {      return item[0]    }    // 判断是否为空栈    isEmpty() {      return item.length === 0 ? true : false    }    //清除站内所有元素(clear)    clear() {      item = []    }    // 返回栈内元素个数(size)    size() {      return item.length    }    // 打印数组元素    print() {      console.log(item)    }  }  return Queue2}()const priority = new priorityQueue()
复制代码


用户头像

公众号【我是程序员小贱】干货分享 2019.10.15 加入

计算机小硕,热爱分享

评论

发布
暂无评论
数据结构队列