Intro
Last time, we learned what a Queue is and set it up.
Today, we learn how to enqueue / add a new node to the end of the Queue.
Starter Code ▶️
We start with the code from the last part.
class Node { constructor(value) { this.value = value; this.next = null; } } class Queue { constructor() { this.length = 0; this.start = null; this.end = null; } }
Thoughts 💭
First, we should think about the constraints and possibilities:
If the Queue is empty:
- create a new node
- set the new node as start and end
- increase the queue's length by 1
- return the new node
All remaining cases:
- create a new node
- set the new node as the end's next node
- set the new node as the new end
- increase the queue's length by 1
- return the new node
Example
// current queue: A (start) ==> B (end) // desired queue: A (start) ==> B ==> C (end)
Steps:
// current queue: A (start) ==> B (end) // set the new node as the end's next node A (start) ==> B (end) ==> C // set the new node as the new end A (start) ==> B ==> C (end) // desired queue: A (start) ==> B ==> C (end)
✅
Implementation 📝
class Node { constructor(value) { this.value = value; this.next = null; } } class Queue { constructor() { this.length = 0; this.start = null; this.end = null; } enqueue(value) { // create a new node const newNode = new Node(value); if (!this.length) { // set the new node as start and end this.start = newNode; this.end = newNode; } else { // set the new node as the end's next node this.end.next = newNode; // set the new node as the new end this.end = newNode; } // increase the queue's length by 1 this.length += 1; // return the new node return newNode; } }
Result
Let's have a look how to use the enqueue
method and its results.
const newQueue = new Queue(); // empty queue console.log(newQueue); // Queue { length: 0, start: null, end: null } console.log(newQueue.enqueue("new A")); // Node { value: 'new A', next: null } // queue with 1 node console.log(newQueue); // Queue { // length: 1, // start: Node { value: 'new A', next: null }, // end: Node { value: 'new A', next: null } // } console.log(newQueue.enqueue("new B")); // Node { value: 'new B', next: null } // queue with 2 nodes console.log(newQueue); // Queue { // length: 2, // start: Node { value: 'new A', next: Node { value: 'new B', next: null } }, // end: Node { value: 'new B', next: null } // }
✅
Next Part ➡️
We will implement our next method to dequeue
the first node.
Don't miss interesting stuff, subscribe!
Questions ❔
- Do you see some similarities to the Singly Linked List or Doubly Linked List?
Top comments (0)