栈
特性:后进先出
from queue import LifoQueue
lq = LifoQueue(maxsize=0)
#栈写入数据
lq.put(0)
lq.put(1)
lq.put(2)
#删除队尾数据,并返回该数据
lq.get()
#输出队列所有数据
print(lq.queue)
#输出:
# [0, 1, 2]
# [0, 1]
队列
特性:先进后出
from queue import Queue
#maxsize设置队列中,数据上限,小于或等于0则不限制,容器中大于这个数则阻塞,直到队列中的数据被消掉
q = Queue(maxsize=0)
#写入队列数据
q.put(0)
q.put(1)
q.put(2)
#输出当前队列所有数据
print(q.queue)
#删除队列数据,并返回该数据
q.get()
#输也所有队列数据
print(q.queue)
# 输出:
# deque([0, 1, 2])
# deque([1, 2])
优先级队列
优先级越大越早被弹出
# 存储数据时可设置优先级的队列
# 优先级设置数越小等级越高
pq = PriorityQueue(maxsize=0)
#写入队列,设置优先级
pq.put((9,'a'))
pq.put((7,'c'))
pq.put((1,'d'))
#输出队例全部数据
print(pq.queue)
#取队例数据,可以看到,是按优先级取的。
pq.get()
pq.get()
print(pq.queue)
#输出:
[(9, 'a')]
常见题型
leetcode
- #42 接雨水
- #85 最大矩形
- #20 有效的括号
- #94 二叉树的中序遍历
- #225 用队列实现栈
- #739 每日温度