| class Node { | |
| constructor(value){ | |
| this.value = value; | |
| this.next =null; | |
| } | |
| } | |
| class Queue { | |
| constructor() { | |
| this.first = null; | |
| this.last = null; | |
| this.size = 0; | |
| } | |
| enqueue(value) { | |
| let newNode = new Node(value); | |
| if(!this.first) { | |
| this.first = newNode; | |
| this.last = newNode; | |
| } else { | |
| this.last.next = newNode; | |
| this.last = newNode | |
| } | |
| return ++this.size; | |
| } | |
| dequeue() { | |
| if(!this.first) return null; | |
| let removedNode = this.first; | |
| if(this.first === this.last) { | |
| this.last = null | |
| } | |
| this.first = this.first.next; | |
| this.size--; | |
| return removedNode.value; | |
| } | |
| } | |
| let queue = new Queue(); | |
| queue.enqueue("FIRST"); | |
| queue.enqueue("SECOND"); | |
| queue.enqueue("THIRD"); | |