zoukankan      html  css  js  c++  java
  • 数据结构—队列(Queue)

    队列

    三五七言

    不要让数据结构成为天花板

    相关代码

    特点

    先进先出的原则

    队列是一个线性结构,特点是在某一端添加数据,在另一端删除数据

     

    用途:

    模拟流程或其他带有抽象排队属性的事物或逻辑,例如时间循环队列,发布订阅模式的回调队列等等。

     

    基本方法

    • enqueue()在队尾插入一个元素
    • dequeue()从队头删除一个元素
    • getHeader()获取队头的元素
    • getTail()获取队尾的元素
    • getLength()获取队列的长度
    • isEmpty()判断队列是否为空队列
    /**
     * 队列基本方法
    
    enqueue()在队尾插入一个元素
    dequeue()从队头删除一个元素
    getHeader()获取队头的元素
    getTail()获取队尾的元素
    getLength()获取队列的长度
    isEmpty()判断队列是否为空队列
     */
    class Queue {
      constructor() {
        this.queue = []
      }
      // 入队
      enqueue(item) {
        this.queue.push(item)
      }
    
      //出队
      dequeue() {
        return this.queue.shift()
      }
    
      //获取队头
      getHeader() {
        return this.queue[0]
      }
    
      //获取队尾数据
      getTail() {
        return this.queue[this.queue.length - 1]
      }
      getLength() {
        return this.queue.length
      }
      //判断空
      isEmpty() {
        return this.queue.length === 0
      }
    }
    
    module.exports = Queue
     

    双向队列

     

    循环队列

    使用frontrear两个指针分别代表队列的头和尾,实际对外表现的队列是frontrear所指向的元素构成的。为了复用存储空间,循环队列在存储结构的实现上是首位相连的。

    • 基本要素
      • front指针指向队头
      • rear指针指向队尾
      • size队列的长度
      • length存储空间的大小
    • 基本方法
      • enqueue()元素入队
      • dequeue()元素出队
      • isEmpty()判断队空
      • isFull()判断队满
      • getSize()获取队列长度
      • getLength()获取存储空间长度
      • clear()清空队列

     

    相关代码

  • 相关阅读:
    查询语句
    索引的增删改成查
    pymysql模块
    mysql备份
    单表查询语法
    单表查询
    mysql增删改差
    Leetcode--1. Two Sum(easy)
    Leetcod--20. Valid Parentheses(极简洁的括号匹配)
    Leetcode-448. Find All Numbers Disappeared in an Array(solve without extra space easy)
  • 原文地址:https://www.cnblogs.com/zzghk/p/14023534.html
Copyright © 2011-2022 走看看