[['kitten', 2], ['dog', 2], ['rabbit', 2]]
这里第二个值(整数)表示项目优先级。如果我们将优先级为1
['human', 1]
排入队列(假设优先级较低,则优先级较低),那么它将成为第一个出列的项目。该集合将是这样的: [['human', 1], ['kitten', 2], ['dog', 2], ['rabbit', 2]]
。我们已经开始在代码编辑器中编写PriorityQueue
。您需要添加一个enqueue
方法来添加具有优先级的项目,一个用于删除项目的dequeue
方法,一个用于返回队列中项目数量的size
方法,一个用于返回队列front
元素的front
方法,以及最后一个isEmpty
方法,如果队列为空则返回true
,否则返回false
。入enqueue
应接受上面显示格式的项目( ['human', 1]
),其中1
表示优先级。 dequeue
应该只返回当前项目,而不是其优先级。 Queue
类应该有一个enqueue
方法。
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.enqueue === "function")}()), "Your Queue
class should have a enqueue
method.");'
- text: 您的Queue
类应该有一个dequeue
方法。
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.dequeue === "function")}()), "Your Queue
class should have a dequeue
method.");'
- text: 您的Queue
类应该有一个size
方法。
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.size === "function")}()), "Your Queue
class should have a size
method.");'
- text: 您的Queue
类应该有一个isEmpty
方法。
testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.isEmpty === "function")}()), "Your Queue
class should have an isEmpty
method.");'
- text: 当项目入队和出列时,您的PriorityQueue应使用size
方法正确跟踪当前项目数。
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: 当队列为空时, isEmpty
方法应该返回true
。
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: 优先级队列应该在具有较低优先级的项之前返回具有较高优先级的项,否则以先进先出顺序返回项。
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.");'
```