freeCodeCamp Challenge Guide: Create a Queue Class

Create a Queue Class


Problem Explanation

  • A Queue is an abstract Data Structure.

  • A Queue folow FIFO/LILO principle.

  • In this challenge we nede to implement enqueue(), dequeue(), front(), size(), isEmpty() methods.

    • enqueue() - This method adds the element to the queue.
    • dequeue() - This method removes the first element from the queue.
    • front() - This method returns the first element in the queue that’d be dequeue’d.
    • size() - This method returns the size of the queue.
    • isEmpty() - This method returns if the queue is empty.
  • DS Access Search Insert Delete
    Queue n n 1 1
  • Queue in action


Solutions

Solution 1 (Click to Show/Hide)

Note: This solution is not exactly a queue, the shift() method used in the dequeue() method is of complexity O(n) and not O(1). However, the advanced solution rectifies this and uses Object(HashTables) instead of Array to implement Queue.

function Queue() {
  var collection = [];
  this.print = function() {
    console.log(collection);
  };
  this.enqueue = function(val) {
    collection.push(val);
  };
  this.dequeue = function() {
    return collection.shift();
  };
  this.front = function() {
    return collection[0];
  };
  this.size = function() {
    return collection.length;
  };
  this.isEmpty = function() {
    return collection.length === 0;
  };
}
Solution 2 (Click to Show/Hide)
class Queue {
  constructor() {
    this.collection = {};
    this.start = 0;
    this.end = 0;
  }
  print() {
    console.log(this.collection);
  }
  enqueue(val) {
    this.collection[this.end++] = val;
  }
  dequeue() {
    return this.collection[this.start++];
  }
  front() {
    return this.collection[this.start];
  }
  size() {
    return this.end - this.start;
  }
  isEmpty() {
    return this.size() === 0;
  }
}

Relevant Links

1 Like