队列 优先级队列 python 代码实现

背景

众所周知,普通的队列就是先进先出的,栈是先进后出。其实他们的存储都是在一个列表或者数组里面。
所以我们引出了优先级队列,让里面的每一个元素具有了自己的权值。可以人为的设定权值的大小。也可以根据停留的时间来确定权值的大小。如果停留的时间越长,那么优先级越大,就是队列。如果停留的时间越短,那么优先级越大,那就是栈。

import collections
import heapq


class Queue:
    def __init__(self):
        self.elements = collections.deque()

    def empty(self):
        return len(self.elements) == 0

    def put(self, x):
        self.elements.append(x)

    def get(self):
        return self.elements.popleft()


class PriorityQueue:
    def __init__(self):
        self.elements = []

    def empty(self):
        return len(self.elements) == 0

    def put(self, item, priority):
        heapq.heappush(self.elements, (priority, item))

    def get(self):
        return heapq.heappop(self.elements)[1]

你可能感兴趣的:(Python)