{"ScriptPreparationCode":"function createLinkedListQueue() {\r\n\tlet length = 0\r\n\tlet head = undefined\r\n\tlet tail = undefined\r\n\treturn {\r\n\t\tenqueue(value) {\r\n\t\t\tenqueueNode(value)\r\n\t\t},\r\n\t\tdequeue() {\r\n\t\t\treturn dequeueNode()\r\n\t\t},\r\n\t\tsize() {\r\n\t\t\treturn length\r\n\t\t},\r\n\t\thead() {\r\n\t\t\treturn head\r\n\t\t},\r\n\t\ttail() {\r\n\t\t\treturn tail\r\n\t\t}\r\n\t}\r\n\tfunction enqueueNode(value) {\r\n\t\tconst node = {\r\n\t\t\tvalue,\r\n\t\t\tnext: undefined \r\n\t\t}\r\n\t\tif(!head) {\r\n\t\t\thead = node\r\n\t\t\ttail = node\r\n\t\t}\r\n\t\telse {\r\n\t\t\ttail.next = node\r\n\t\t\ttail = node\r\n\t\t}\r\n\t\tlength \u002B= 1\t\r\n\t}\r\n\tfunction dequeueNode() {\r\n\t\tif(head) {\r\n\t\t\tconst value = head.value\r\n\t\t\thead = head.next\r\n\t\t\tlength -= 1\r\n\t\t\treturn value\r\n\t\t}\r\n\t\ttail = undefined\r\n\t\treturn undefined\r\n\t}\r\n}\r\n\r\nfunction createDoubleArrayQueue() {\r\n\treturn {\r\n\t\tinput: [],\r\n\t\toutput: [],\r\n\t\tenqueue(element) {\r\n\t\t\tthis.input.push(element)\r\n\t\t},\r\n\t\tdequeue() {\r\n\t\t\tif(this.output.length === 0) {\r\n\t\t\t\tthis.pivot()\r\n\t\t\t}\r\n\t\t\treturn this.output.pop()\r\n\t\t},\r\n\t\tpivot() {\r\n\t\t\tthis.output = this.input.reverse()\r\n\t\t\tthis.input = []\r\n\t\t},\r\n\t\tisEmpty() {\r\n\t\t\treturn this.input.length === 0 \u0026\u0026 this.output.length === 0\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar doubleQ = createDoubleArrayQueue()\r\nvar linkedListQ = createLinkedListQueue()\r\nvar queueSize = 1000000\r\n\r\nfor(let i = 0; i \u003C queueSize; i\u002B\u002B) {\r\n doubleQ.enqueue(\u0027testString\u0027 \u002B i)\r\n linkedListQ.enqueue(\u0027testString\u0027 \u002B i)\r\n}","TestCases":[{"Name":"Double Array","Code":"for(let i = 0; i \u003C queueSize; i\u002B\u002B) {\r\n doubleQ.dequeue()\r\n}","IsDeferred":false},{"Name":"Linked List","Code":"for(let i = 0; i \u003C queueSize; i\u002B\u002B) {\r\n linkedListQ.dequeue()\r\n}","IsDeferred":false}]}