[['kitten', 2], ['dog', 2], ['rabbit', 2]]
Здесь второе значение (целое число) представляет приоритет элемента , Если мы ставим в очередь ['human', 1]
с приоритетом 1
(при условии, что более низкие приоритеты заданы приоритетом), тогда это будет первый элемент, который будет удален. Коллекция понравится: [['human', 1], ['kitten', 2], ['dog', 2], ['rabbit', 2]]
. Мы начали писать PriorityQueue
в редакторе кода. Вам нужно будет добавить метод enqueue
для добавления элементов с приоритетом, метод dequeue
для удаления элементов, метод size
для возврата количества элементов в очереди, front
метод для возврата элемента в передней части очереди и наконец, метод isEmpty
, который вернет true
если очередь пуста или false
если это не так. enqueue
должна принимать элементы с форматом, указанным выше ( ['human', 1]
), где 1
представляет приоритет. dequeue
должен возвращать только текущий элемент, а не его приоритет.
Queue
class should have a enqueue
method.
testString: assert((function(){var test = new PriorityQueue(); return (typeof test.enqueue === 'function')}()));
- text: Your Queue
class should have a dequeue
method.
testString: assert((function(){var test = new PriorityQueue(); return (typeof test.dequeue === 'function')}()));
- text: Your Queue
class should have a size
method.
testString: assert((function(){var test = new PriorityQueue(); return (typeof test.size === 'function')}()));
- text: Your Queue
class should have an isEmpty
method.
testString: assert((function(){var test = new PriorityQueue(); return (typeof test.isEmpty === 'function')}()));
- text: Your PriorityQueue should correctly keep track of the current number of items using the size
method as items are enqueued and dequeued.
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)}()));
- text: The isEmpty
method should return true
when the queue is empty.
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()); }()));
- text: 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.
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';}()));
```