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