实现优先级队列

import heapq
class PriorityQueue:
    def __init__(self):
        self._queue=[]
        self._index=0
    def push(self,item,priority):
        heapq.heappush(self._queue,(-priority,self._index,item))
        self._index+=1
    def pop(self):
        return heapq.heappop(self._queue)[-1]
class Item:
    def __init__(self,name):
        self.name=name
    def __repr__(self):
        return 'Item({!r})'.format(self.name)

q=PriorityQueue()
q.push(Item('AAA'),1)
q.push(Item('BBB'),4)
q.push(Item('CCC'),5)
q.push(Item('DDD'),1)
print(q.pop())
print(q.pop())
print(q.pop())

 

posted @ 2020-05-02 20:47  CodeYaSuo  阅读(110)  评论(0编辑  收藏  举报