+ * @returns An iterator for the priority queue.
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols
+ */
+ [Symbol.iterator] (): Iterator<T> {
+ let i = 0
+ return {
+ next: () => {
+ if (i >= this.nodeArray.length) {
+ return {
+ value: undefined,
+ done: true
+ }
+ }
+ const value = this.nodeArray[i].data
+ i++
+ return {
+ value,
+ done: false
+ }
+ }
+ }
+ }
+
+ /**
+ * Increments the size of the priority queue.
+ *
+ * @returns The new size of the priority queue.