[['kitten', 2], ['dog', 2], ['rabbit', 2]]
Aqui o segundo valor (um inteiro) representa a prioridade do item. . Se enfileirarmos ['human', 1]
com uma prioridade de 1
(assumindo que prioridades mais baixas recebem precedência), ele seria o primeiro item a ser retirado. A coleção seria assim: [['human', 1], ['kitten', 2], ['dog', 2], ['rabbit', 2]]
. Nós começamos a escrever um PriorityQueue
no editor de código. Você precisará adicionar um método de enqueue
para adicionar itens com prioridade, um método de dequeue
para remover itens, um método de size
para retornar o número de itens na fila, um método de front
para retornar o elemento na frente da fila e finalmente, um método isEmpty
que retornará true
se a fila estiver vazia ou false
se não estiver. O enqueue
deve aceitar itens com o formato mostrado acima ( ['human', 1]
), em que 1
representa a prioridade. O dequeue
deve retornar apenas o item atual, não sua prioridade. Queue
deve ter um método de enqueue
.
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.enqueue === "function")}()), "Your Queue
class should have a enqueue
method.");'
- text: Sua classe Queue
deve ter um método de Queue
dequeue
.
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.dequeue === "function")}()), "Your Queue
class should have a dequeue
method.");'
- text: Sua classe Queue
deve ter um 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: Sua classe Queue
deve ter um método isEmpty
.
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.isEmpty === "function")}()), "Your Queue
class should have an isEmpty
method.");'
- text: 'Seu PriorityQueue deve controlar corretamente o número atual de itens usando o método de size
, à medida que os itens são enfileirados e retirados.'
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: O método isEmpty
deve retornar true
quando a fila estiver vazia.
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: 'A fila de prioridade deve retornar itens com prioridade mais alta antes dos itens com prioridade mais baixa e retornar os itens na ordem de primeiro a sair, caso contrário.'
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.");'
```