zoukankan      html  css  js  c++  java
  • JS 算法与数据结构之队列

    一、 什么是队列

    队列是一种先进先出(FIFO,First-in-first-out)的数据结构,其数据智能在队尾插入,在队首删除。

    可以将队列想象成在食堂排队的人群,排在最前面的人第一个打饭,后面来的人只能在队尾排队,直到轮到他们为止。

    二、队列的操作

    1、入队

    使用 enqueue() 方法, 在队尾插入新元素。

    2、出队

    使用 dequeue() 方法, 删除队头的元素。

    3、读取队头元素

    使用 front() 方法,读取队首的元素。

    4、读取队尾元素

    使用 back() 方法,读取队尾的元素。

    5、显示队列内的所有元素

    使用 toString() 方法,显示队列的所有元素。

    6、表示队列内是否含有元素

    使用 empty() 方法,判断队列是否为空。

    三、队列的实现

    1、定义 Queue 类

    function Queue() {
      this.dataStore = []
      this.enqueue = enqueue
      this.dequeue = dequeue
      this.front = front
      this.back = back
      this.toString = toString
      this.empty = empty
    }
    

    2、实现 enqueue 方法

    function enqueue(element) {
      this.dataStore.push(element)
    }
    

    3、实现 dequeue 方法

    function dequeue() {
      return this.dataStore.shift()
    }
    

    4、实现 front 方法

    function front() {
      return this.dataStore[0]
    }
    

    5、实现 back 方法

    function back() {
      return this.dataStore[this.dataStore.length - 1]
    }
    

    6、实现 toString 方法

    function toString() {
      var retStr = ''
      for (var i = 0; i < this.dataStore.length; ++i) {
        retStr += this.dataStore[i] + '
    '
      }
      return retStr
    }
    

    7、实现 empty 方法

    function empty() {
      if (this.dataStore.length == 0) {
        return true
      } else {
        return false
      }
    }
    

    8、测试 Queue 类的实现

    var q = new Queue()
    
    q.enqueue('a')
    q.enqueue('b')
    q.enqueue('c')
    
    console.log(q.toString())
    // "a"
    // "b"
    // "c"
    
    q.dequeue()
    
    console.log(q.toString())
    // "b"
    // "c"
    console.log(q.front())  // "b"
    console.log(q.back())   // "c"
    console.log(q.empty())  // false
    
    q.dequeue()
    q.dequeue()
    
    console.log(q.empty())  // true
    
  • 相关阅读:
    设计模式之GOF23外观模式
    设计模式之GOF23装饰模式
    设计模式之GOF23组合模式
    设计模式之GOF23桥接模式
    设计模式之GOF23代理模式03
    设计模式之GOF23代理模式02
    设计模式之GOF23代理模式01
    设计模式之GOF23适配器模式
    设计模式之GOF23原型模式02
    设计模式之GOF23原型模式01
  • 原文地址:https://www.cnblogs.com/Leophen/p/14899699.html
Copyright © 2011-2022 走看看