--对列--

发布于:2023-01-06 ⋅ 阅读:(199) ⋅ 点赞:(0)

前言

我们已经学习了一种受限的线性结构: 栈结构. 并且已经知道这种受限的数据结构对于解决某些特定问题, 会有特别的效果.

下面, 我们再来学习另外一个受限的数据结构: 队列. 它也是一种受限的线性结构.

队列

一. 认识队列

我们也先来认识一下队列, 看看它的特点和应用场景等.

队列结构

  •  队列(Queue),它是一种运算受限的线性表,先进先出(FIFO First In First Out)
  • 队列是一种受限的线性结构
  • 受限之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作
  • 队列的图解
  • 队列在程序中的应用
  • 打印队列:
  • 有五份文档需要打印, 这些文档会按照次序放入到打印队列中.
  • 打印机会依次从队列中取出文档, 优先放入的文档, 优先被取出, 并且对该文档进行打印.
  • 以此类推, 直到队列中不再有新的文档.
  • 线程队列:
  • 在进行多线程开发时, 我们不可能无限制的开启新的线程.
  • 这个时候, 如果有需要开启线程处理任务的情况, 我们就会使用线程队列.
  • 线程队列会依照次序来启动线程, 并且处理对应的任务.

 

队列的操作

  • 队列有哪些常见的操作呢?
  • enqueue(element):向队列尾部添加一个(或多个)新的项。
  • dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
  • front():返回队列中第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息——与Stack类的peek方法非常类似)。
  • isEmpty():如果队列中不包含任何元素,返回true,否则返回false。
  • size():返回队列包含的元素个数,与数组的length属性类似。

 

自定义对列:

 

    <script>

        // 自定义队列

function Queue() {

    var items = []

    // 队列操作的方法

    // enter queue方法

    this.enqueue = function (element) {

        items.push(element)

    }

    // delete queue方法

// 注意: 从队列中删除元素不可以删除最后一个元素了. 因为, 先进入队列中的元素, 先从队列中取出. 因此, 应该删除第一个元素

    this.dequeue = function () {

        return items.shift()

    }

    // 查看前端的元素

    this.front = function () {

        return items[0]

    }

    // 查看队列是否为空

    this.isEmpty = function () {

        return items.length == 0

    }

    // 查看队列中元素的个数

    this.size = function () {

        return items.length

    }

}

    </script>

​​​​​​​


网站公告

今日签到

点亮在社区的每一天
去签到