[1, 2, 3, 4, 5]Aquí la lectura y la escritura están en la posición
^ Leer @ 0
^ Escribe @ 0
0
. Ahora la cola obtiene 3 nuevos registros a
, b
, y c
. Nuestra cola ahora se ve como: [a, b, c, 4, 5]A medida que lee el cabezal de lectura, puede eliminar valores o mantenerlos:
^ Leer @ 0
^ Escribe @ 3
[nulo, nulo, nulo, 4, 5]Una vez que la escritura llega al final de la matriz, vuelve al principio:
^ Leer @ 3
^ Escribe @ 3
[f, nulo, nulo, d, e]Este enfoque requiere una cantidad constante de memoria, pero permite procesar archivos de un tamaño mucho mayor. Instrucciones: En este desafío implementaremos una cola circular. La cola circular debe proporcionar métodos de
^ Leer @ 3
^ Escribe @ 1
dequeue
enqueue
y dequeue
enqueue
que le permitan leer y escribir en la cola. La clase en sí también debe aceptar un número entero que puede usar para especificar el tamaño de la cola cuando la cree. Hemos escrito la versión inicial de esta clase para usted en el editor de código. Cuando pone en cola elementos en la cola, el puntero de escritura debe avanzar y volver al principio una vez que llega al final de la cola. Del mismo modo, el puntero de lectura debe avanzar hacia adelante a medida que se retiran de la cola los elementos. No se debe permitir que el puntero de escritura se mueva más allá del puntero de lectura (nuestra clase no le permitirá sobrescribir datos que aún no ha leído) y el puntero de lectura no debe poder avanzar los datos pasados que haya escrito. Además, el método de enqueue
debe devolver el elemento que ha puesto en enqueue
si tiene éxito y, de lo contrario, devolver el null
. De manera similar, cuando saca de la cola un artículo, debe devolverse y, si no puede sacar la cola, debe devolver un null
. enqueue
agrega elementos a la cola circular.
testString: 'assert((function(){ var test = new CircularQueue(3); test.enqueue(17); test.enqueue(32); test.enqueue(591); var print = test.print(); return print[0] === 17 && print[1] === 32 && print[2] === 591; })(), "The enqueue
method adds items to the circular queue.");'
- text: No puede poner en cola elementos más allá del puntero de lectura.
testString: 'assert((function(){ var test = new CircularQueue(3); test.enqueue(17); test.enqueue(32); test.enqueue(591); test.enqueue(13); test.enqueue(25); test.enqueue(59); var print = test.print(); return print[0] === 17 && print[1] === 32 && print[2] === 591; })(), "You cannot enqueue items past the read pointer.");'
- text: La dequeue
método de Retiros de cola elementos de la cola.
testString: 'assert((function(){ var test = new CircularQueue(3); test.enqueue(17); test.enqueue(32); test.enqueue(591); return test.dequeue() === 17 && test.dequeue() === 32 && test.dequeue() === 591; })(), "The dequeue
method dequeues items from the queue.");'
- text: 'Después de que un elemento se haya retirado de su posición en la cola, se debe restablecer en null
.'
testString: 'assert((function(){ var test = new CircularQueue(3); test.enqueue(17); test.enqueue(32); test.enqueue(672); test.dequeue(); test.dequeue(); var print = test.print(); return print[0] === null && print[1] === null && print[2] === 672; })(), "After an item is dequeued its position in the queue should be reset to null
.");'
- text: Intentar sacar de la cola más allá del puntero de escritura devuelve un null
y no avanza el puntero de escritura.
testString: 'assert((function(){ var test = new CircularQueue(3); test.enqueue(17); test.enqueue(32); test.enqueue(591); return test.dequeue() === 17 && test.dequeue() === 32 && test.dequeue() === 591 && test.dequeue() === null && test.dequeue() === null && test.dequeue() === null && test.dequeue() === null && test.enqueue(100) === 100 && test.dequeue() === 100; })(), "Trying to dequeue past the write pointer returns null
and does not advance the write pointer.");'
```