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()清空队列

     

    相关代码

  • 相关阅读:
    循环选择判断文件类型
    SpringBoot+MyBatis+Mysql+Durid实现动态多数据源
    Spring 常用注解
    Spring IOC容器中那些鲜为人知的细节
    java8 Stream对List<Map>的分组合并操作
    Java8的CompletableFuture 使用详解
    Spring MVC源码分析
    Spring AOP源码分析
    Spring中AOP必须明白的几个概念
    UriComponentsBuilder和UriComponents url编码
  • 原文地址:https://www.cnblogs.com/zzghk/p/14023534.html
Copyright © 2011-2022 走看看