freeCodeCamp Challenge Guide: Create a Priority Queue Class

Create a Priority Queue Class


Problem Explanation

  • Priority Queue is an Abstract Data Type.
  • It can be implemented using other Data Structures but is commonly implemented using a Heap.
  • Each node contains a priority. When we enqueue a node to the queue, it’s “bubbled up” to its place in the queue.
  • In this challenge we need to create a Priority Queue class based on Min-Heap with a few methods:
    • enqueue() - It enqueue’s the new node to it’s appropriate place in queue.
    • dequeue() - It removes the first node from the queue.
    • front() - This method returns the first node to be dequeued.
    • size() - Returns the size of the queue.
    • isEmpty() - Returns if the queue is empty.
  • DS Access Search Insert Delete
    Priority Queue 1 1 logn logn

Relevant Links


Solutions

Solution 1 (Click to Show/Hide)
function PriorityQueue () {
  this.collection = [];
  this.printCollection = function() {
    console.log(this.collection);
  };
  // Only change code below this line
  this.enqueue = function(item) {
    let index = this.collection.findIndex(elem => elem[1] > item[1]);
    if (index !== -1) {
      this.collection.splice(index, 0, item);
    } else {
      this.collection.push(item);
    }
  }

  this.dequeue = function() {
    return this.collection.shift()[0];
  }

  this.size = function() {
    return this.collection.length;
  }

  this.isEmpty = function() {
    return this.size() === 0;
  }

  this.front = function() {
    return this.collection[0][0];
  }
  // Only change code above this line
}
9 Likes