目录
队列
队列结构Queue的特性:一种受限的线性表,先进先出(FIFO),只允许在表的前端进行删除操作,在表的后端进行添加操作
距离:排队、打印
实现:
1.数组实现
2.链表实现
enqueue(el) 向队列尾部添加一个新的项
dequeue() 移出队列的第一项,并返回被移出的元素
front() 返回队列中的第一个元素
isEmpty() 队列是否为空,反馈布尔值
size() 返回队列包含元素的个数
toString() 将队列的内容转成字符串
3.案例:击鼓传花
let arr=["a","b","c","d","e","f"]
let q=new Queue(arr)
function jgch(n){
let count=0
while(q.size()!=1){
count++
if(count!=n){
// 将队列头部的数据放入队尾
q.enqueue(q.dequeue())
}else{
// 删掉头部元素
q.dequeue()
count=0
}
}
let item=q.front()
return arr.indexOf(item)
}
console.log(jgch(3));
优先级队列
优先级队列:普通队列插入一个元素,数据往往放在后边,但是优先级队列会考虑插入元素的数据优先级
案例:登机的顺序、候诊室
问题:每个元素不再只是一个数据而且包含数据的优先级,在添加方式中,根据优先级放入正确的位置
实现:封装元素和优先级放在一起
添加元素时,将新元素的优先级和队列中已经存在的优先级进行比较
priority 值越小代表优先级越高