You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
class Node { /// value;
/// next;
constructor(value) { this.value = value;
// TODO: Remove this when targeting Node.js 12.
this.next = undefined; } }
class Queue { // TODO: Use private class fields when targeting Node.js 12.
// #_head;
// #_tail;
// #_size;
constructor() { this.clear(); }
enqueue(value) { const node = new Node(value);
if (this._head) { this._tail.next = node; this._tail = node; } else { this._head = node; this._tail = node; }
this._size++; }
dequeue() { const current = this._head; if (!current) { return; }
this._head = this._head.next; this._size--; return current.value; }
clear() { this._head = undefined; this._tail = undefined; this._size = 0; }
get size() { return this._size; }
* [Symbol.iterator]() { let current = this._head;
while (current) { yield current.value; current = current.next; } } }
module.exports = Queue;
|