数据结构队列
发布于: 2021 年 03 月 24 日
队列是一种特殊的线性表,遵循 FILFO(先进先出)的原则,队列在尾部添加元素,在顶部移除元素。最新添加的元素必须在队列末尾
队列特点
先进先出
在顶部删除
在尾部添加
队列通常有以下方法
enqueue():向尾部添加一个或者多个元素
dequeue():移除队列第一个元素并返回移除元素
front():返回队列第一个元素,就是最先添加的那个元素
isEmpty:判断是否为空队列
size():返回队列元素个数
创建队列
const Queue = function () {
const item = []
class Queues {
// 添加元素 在末尾添加
enqueue(value) {
item.push(value)
}
//删除元素 在头部删除
pop(value) {
return item.shift(value)
}
// 返回栈顶元素
front() {
return item[0]
}
// 判断是否为空栈
isEmpty() {
return item.length === 0 ? true : false
}
//清除站内所有元素(clear)
clear() {
item = []
}
// 返回栈内元素个数(size)
size() {
return item.length
}
// 打印数组元素
print() {
console.log(item.toString())
}
}
return Queues
}()
const queue = new Queue()
复制代码
优先队列
// 优先队列
const priorityQueue = function () {
const item = []
class Queue2 {
// 添加元素 根据优先级 决定添加位置 数字越大 优先级越小
enqueue(value, priority) {
let obj = { value, priority }
if (item.length !== 0) {
let control = false
for (let i = 0; i < item.length; i++) {
if (obj.priority < item[i].priority) {
item.splice(i, 0, obj)
control = true
break
}
}
control ? null : item.push(obj)
} else {
item.push(obj)
}
}
//删除元素 在头部删除
pop(value) {
return item.shift(value)
}
// 返回栈顶元素
front() {
return item[0]
}
// 判断是否为空栈
isEmpty() {
return item.length === 0 ? true : false
}
//清除站内所有元素(clear)
clear() {
item = []
}
// 返回栈内元素个数(size)
size() {
return item.length
}
// 打印数组元素
print() {
console.log(item)
}
}
return Queue2
}()
const priority = new priorityQueue()
复制代码
划线
评论
复制
发布于: 2021 年 03 月 24 日阅读数: 8
我是程序员小贱
关注
公众号【我是程序员小贱】干货分享 2019.10.15 加入
计算机小硕,热爱分享
评论