diff --git a/src/data-structures/queue/Queue.js b/src/data-structures/queue/Queue.js index 74cf7095..37d292af 100644 --- a/src/data-structures/queue/Queue.js +++ b/src/data-structures/queue/Queue.js @@ -2,6 +2,10 @@ import LinkedList from '../linked-list/LinkedList'; export default class Queue { constructor() { + // We're going to implement Queue based on LinkedList since this + // structures a quite similar. Namely they both operates mostly with + // with theirs beginning and the end. Compare enqueue/de-queue + // operations of the Queue with append/prepend operations of LinkedList. this.linkedList = new LinkedList(); } @@ -9,6 +13,7 @@ export default class Queue { * @return {boolean} */ isEmpty() { + // The queue is empty in case if its linked list don't have tail. return !this.linkedList.tail; } @@ -17,9 +22,11 @@ export default class Queue { */ peek() { if (!this.linkedList.head) { + // If linked list is empty then there is nothing to peek from. return null; } + // Just read the value from the end of linked list without deleting it. return this.linkedList.head.value; } @@ -27,6 +34,9 @@ export default class Queue { * @param {*} value */ enqueue(value) { + // Enqueueing means to stand in the line. Therefore let's just add + // new value at the beginning of the linked list. It will need to wait + // until all previous nodes will be processed. this.linkedList.append(value); } @@ -34,6 +44,8 @@ export default class Queue { * @return {*} */ dequeue() { + // Let's try to delete the last node from linked list (the tail). + // If there is no tail in linked list (it is empty) just return null. const removedHead = this.linkedList.deleteHead(); return removedHead ? removedHead.value : null; } @@ -43,6 +55,7 @@ export default class Queue { * @return {string} */ toString(callback) { + // Return string representation of the queue's linked list. return this.linkedList.toString(callback); } }