队列是遵循FIFO(先入先出)原则的一组有序的项。队列在尾部添加新元素,从顶部移除元素。最新添加的元素必须排在队列的末尾。
实现方式和使用数组实现栈相似,区别在于出队是遵循先入先出的原则
实现方式和使用hash实现栈相似,区别在于出队是遵循先入先出的原则
和数组的Array.prototype.shift
复杂度为O(n)
不同,出队的时间复杂度为O(1)
主要是利用栈的pop()
方法的时间复杂度为O(1)
去模拟队列的出队
测试用例
新增一个优先级字段,每次入队都对根据优先级来入队
import { PriorityQueue } from 'ct-dsa'
let priorityQueue = new PriorityQueue()
priorityQueue.enqueue('Careteen', 2)
priorityQueue.enqueue('Lanlan', 1)
priorityQueue.print() // => Lanlan,Careteen
desc |
param |
mean |
type |
return |
入队 |
element |
栈内元素可为任意类型 |
Any |
void |
desc |
param |
mean |
type |
return |
出队 |
- |
- |
- |
Any |
desc |
param |
mean |
type |
return |
取队头元素 |
- |
- |
- |
Any |
desc |
param |
mean |
type |
return |
是否为空 |
- |
- |
- |
Boolean |
desc |
param |
mean |
type |
return |
队列大小 |
- |
- |
- |
Number |
desc |
param |
mean |
type |
return |
清空队列 |
- |
- |
- |
void |
desc |
param |
mean |
type |
return |
打印队列 |
- |
- |
- |
String |
import { Queue } from 'ct-dsa'
const queue = new Queue();
console.log(queue.isEmpty()); // outputs true
queue.enqueue('John');
queue.enqueue('Jack');
console.log(queue.toString()); // John,Jack
queue.enqueue('Camila');
console.log(queue.toString()); // John,Jack,Camila
console.log(queue.size()); // outputs 3
console.log(queue.isEmpty()); // outputs false
queue.dequeue(); // remove John
queue.dequeue(); // remove Jack
console.log(queue.toString()); // Camila
import { hotPotato } from 'ct-dsa'
let nameList = ['Careteen', 'Lanlan', 'High', 'Letme', 'Uzi']
hotPotato(nameList, 7)