[['kitten', 2], ['dog', 2], ['rabbit', 2]]
Aquí el segundo valor (un entero) representa la prioridad del elemento . Si ponemos en cola ['human', 1]
con una prioridad de 1
(suponiendo que se da prioridad a las prioridades más bajas) sería el primer elemento que se eliminará de la cola. A la colección le gustaría esto: [['human', 1], ['kitten', 2], ['dog', 2], ['rabbit', 2]]
. Empezamos a escribir un PriorityQueue
en el editor de código. Necesitará agregar un método de enqueue
en enqueue
para agregar elementos con una prioridad, un método de dequeue
para eliminar elementos, un método de size
para devolver el número de elementos en la cola, un método front
para devolver el elemento al frente de la cola y finalmente, un método isEmpty
que devolverá true
si la cola está vacía o false
si no lo está. La enqueue
debe aceptar elementos con el formato que se muestra arriba ( ['human', 1]
) donde 1
representa la prioridad. La dequeue
debe devolver solo el elemento actual, no su prioridad. Queue
debe tener un método de enqueue
en enqueue
.
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.enqueue === "function")}()), "Your Queue
class should have a enqueue
method.");'
- text: Tu clase de Queue
debe tener un método de dequeue
.
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.dequeue === "function")}()), "Your Queue
class should have a dequeue
method.");'
- text: Tu clase de Queue
debe tener un método de size
.
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.size === "function")}()), "Your Queue
class should have a size
method.");'
- text: Tu clase de Queue
debe tener un método isEmpty
.
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.isEmpty === "function")}()), "Your Queue
class should have an isEmpty
method.");'
- text: 'Su PriorityQueue debe realizar un seguimiento correcto del número actual de elementos utilizando el método de size
, ya que los elementos se ponen en cola y se eliminan de la cola.'
testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["David Brown", 2]); test.enqueue(["Jon Snow", 1]); var size1 = test.size(); test.dequeue(); var size2 = test.size(); test.enqueue(["A", 3]); test.enqueue(["B", 3]); test.enqueue(["C", 3]); return (size1 === 2 && size2 === 1 && test.size() === 4)}()), "Your PriorityQueue should correctly keep track of the current number of items using the size
method as items are enqueued and dequeued.");'
- text: El método isEmpty
debería devolver true
cuando la cola está vacía.
testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["A", 1]); test.enqueue(["B", 1]); test.dequeue(); var first = test.isEmpty(); test.dequeue(); return (!first && test.isEmpty()); }()), "The isEmpty
method should return true
when the queue is empty.");'
- text: 'La cola de prioridad debe devolver los elementos con una prioridad más alta antes de los elementos con una prioridad más baja y devolver los elementos en el orden de primero en entrar, primero en salir, de lo contrario.'
testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["A", 5]); test.enqueue(["B", 5]); test.enqueue(["C", 5]); test.enqueue(["D", 3]); test.enqueue(["E", 1]); test.enqueue(["F", 7]); var result = []; result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); return result.join("") === "EDABCF";}()), "The priority queue should return items with a higher priority before items with a lower priority and return items in first-in-first-out order otherwise.");'
```