Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function createQueue() {
- const queue = []
- return {
- enqueue: function(item){
- queue.unshift(item)
- },
- dequeue: function(item){
- queue.pop(item)
- },
- isEmpty: function(){
- return queue.length === 0
- },
- peek: function(){
- return queue[queue.length - 1]
- },
- length: function(){
- return queue.length
- }
- }
- }
- const q = createQueue()
- console.log(q.enqueue(1))
- console.log(q.length())
- console.log(q.enqueue(2))
- console.log(q.length())
- function createPriorityQueue(){
- const highPriorityQueue = createQueue()
- const lowPriorityQueue = createQueue()
- return{
- enqueue: function(item, highPriority = false){
- if(highPriority === true){
- return highPriorityQueue.enqueue(item)
- }
- return lowPriorityQueue.enqueue(item)
- },
- dequeue: function(){
- if(highPriorityQueue.isEmpty()){
- return lowPriorityQueue.dequeue()
- }
- return highPriorityQueue.dequeue()
- },
- peek: function(){
- if(highPriorityQueue.isEmpty()){
- return lowPriorityQueue.peek()
- }
- return highPriorityQueue.peek()
- },
- length: function(){
- return highPriorityQueue.length() + lowPriorityQueue.length()
- },
- isEmpty: function(){
- highPriorityQueue.isEmpty() && lowPriorityQueue.isEmpty()
- }
- }
- }
- const qPriority = createPriorityQueue()
- qPriority.enqueue("first task")
- qPriority.enqueue("second task")
- qPriority.enqueue("third task")
- console.log(qPriority.peek())
- qPriority.dequeue()
- console.log(qPriority.peek())
- qPriority.enqueue("priority task", true)
- console.log(qPriority.peek())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement