数据结构-队列

  |  

在 js 中需要描述队列结构也很容易

先进先出的特点,可以采用 push() 与 shift()来描述

队列其实就是生活中的排队

队列的特点

  1. 先进先出
  2. 队头和队尾,进队出队等一系列方法

下面采用 js 描述队列

function Queue() {
this.dataStore = []
this.enqueue = enqueue // 入队
this.dequeue = dequeue // 出队
this.front = front // 队头
this.back = back // 队尾
this.toString = toString // 展示队列
this.empty = empty // 判断队列是否为空
this.length = length // 队列长度
}
function enqueue(element) {
this.dataStore.push(element)
}
function dequeue() {
return this.dataStore.shift()
}
function front() {
return this.dataStore[0]
}
function back() {
return this.dataStore[this.dataStore.length - 1]
}
function toString() {
let retStr = ''
for (let i = 0; i < this.dataStore.length; ++i) {
retStr += this.dataStore[i] + '\n'
}
return retStr
}

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

优先队列(优先级高的先出队列)

例如,进队元素都有一个 code 属性来表示优先级

// 重写出队操作,优先级高的先出队
function dequeue() {
// 获取第一个元素的优先级
let priority = this.dataStore[0].code
// 遍历查找,直到优先级最高
for (let i = 1; i < this.dataStore.length; ++i) {
if (this.dataStore[i].code < priority) {
// code越小,优先级越高
priority = i
}
}
// 最高优先级的元素出队
return this.dataStore.splice(priority, 1)
}

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
,