1 5 實現乙個優先順序佇列

2021-09-29 12:15:31 字數 915 閱讀 4266

問題

怎樣實現乙個按優先順序排序的佇列? 並且在這個佇列上面每次pop操作總是返回優先順序最

高的那個元素

"""

通過引入另外的 index 變數組成三元組 (priority, index, item) ,

就能很好的避免上面 的錯誤, 因為不可能有兩個元素有相同的 index 值。

"""import heapq

class

priorityqueue

:def

__init__

(self)

: self._queque=

self._index=

0def

push

(self,item,priority):(

-priority,self._index,item)

) self._index+=

1def

pop(self):[

-1]class

item

:def

__init__

(self,name)

: self.name=name

def__repr__

(self)

:return

"item()"

.format

(self.name)

q = priorityqueue(

)q.push(item(

'foo'),

1)q.push(item(

'bar'),

5)q.push(item(

'spam'),

4)q.push(item(

'grok'),

1)

1 5實現乙個優先順序佇列

問題 怎樣實現又給按優先順序排序的佇列?並且在佇列上面每次pop操作總是返回優先順序最高的那個元素 解決方案 下面的類利用heapq模組實現了乙個簡單的優先順序佇列 import heapq class priorityqueue def init self self.queue self.inde...

實現乙個優先順序佇列

怎樣實現乙個按優先順序排序的佇列?並且在這個佇列上面每次 pop 操作總是返回優先順序最高的那個元素 下面的類利用 heapq 模組實現了乙個簡單的優先順序佇列 import heapq class priorityqueue def init self self.queue self.index ...

1 5 實現優先順序佇列

想要實現乙個佇列,能夠以給定的優先順序來對準榮盛排序,而且每次pop操作時候都會返回優先順序最高的那個元素 使用heapq模組來實現乙個簡單的優先順序佇列 import heapq class priorityqueue def init self self.queue self.index 0 d...