Python算法详解
上QQ阅读APP看书,第一时间看更新

4.3.3 实践演练——完整的顺序队列的操作

下面的实例文件duilie.py演示了实现4种常见队列操作的过程。

源码路径:daima\第4章\duilie.py

from queue import Queue #LILO队列
q = Queue() #创建队列对象
q.put(0)    #在队列尾部插入元素
q.put(1)
q.put(2)
print('LILO队列',q.queue)    #查看队列中的所有元素
print(q.get())              #返回并删除队列头部元素
print(q.queue)
from queue import LifoQueue #LIFO队列
lifoQueue = LifoQueue()
lifoQueue.put(1)
lifoQueue.put(2)
lifoQueue.put(3)
print('LIFO队列',lifoQueue.queue)
lifoQueue.get()             #返回并删除队列尾部元素
lifoQueue.get()
print(lifoQueue.queue)
from queue import PriorityQueue #优先队列
priorityQueue = PriorityQueue() #创建优先队列对象
priorityQueue.put(3)    #插入元素
priorityQueue.put(78)   #插入元素
priorityQueue.put(100)  #插入元素
print(priorityQueue.queue)  #查看优先级队列中的所有元素
priorityQueue.put(1)    #插入元素
priorityQueue.put(2)    #插入元素
print('优先级队列:',priorityQueue.queue)  #查看优先级队列中的所有元素
priorityQueue.get() #返回并删除优先级最低的元素
print('删除后剩余元素',priorityQueue.queue)
priorityQueue.get() #返回并删除优先级最低的元素
print('删除后剩余元素',priorityQueue.queue)  #删除后剩余元素
priorityQueue.get() #返回并删除优先级最低的元素
print('删除后剩余元素',priorityQueue.queue)  #删除后剩余元素
priorityQueue.get() #返回并删除优先级最低的元素
print('删除后剩余元素',priorityQueue.queue)  #删除后剩余元素
priorityQueue.get() #返回并删除优先级最低的元素
print('全部被删除后:',priorityQueue.queue)  #查看优先级队列中的所有元素
from collections import deque   #双端队列
dequeQueue = deque(['Eric','John','Smith'])
print(dequeQueue)
dequeQueue.append('Tom')        #在右侧插入新元素
dequeQueue.appendleft('Terry')  #在左侧插入新元素
print(dequeQueue)
dequeQueue.rotate(2)    #循环右移2次
print('循环右移2次后的队列',dequeQueue)
dequeQueue.popleft()    #返回并删除队列最左端元素
print('删除最左端元素后的队列:',dequeQueue)
dequeQueue.pop()        #返回并删除队列最右端元素
print('删除最右端元素后的队列:',dequeQueue)

执行后会输出:

LILO队列deque([0, 1, 2])
0
deque([1, 2])
LIFO队列[1, 2, 3]
[1]
[3, 78, 100]
优先级队列: [1, 2, 100, 78, 3]
删除后剩余元素 [2, 3, 100, 78]
删除后剩余元素 [3, 78, 100]
删除后剩余元素 [78, 100]
删除后剩余元素 [100]
全部被删除后: []
deque(['Eric', 'John', 'Smith'])
deque(['Terry', 'Eric', 'John', 'Smith', 'Tom'])
循环右移2次后的队列deque(['Smith', 'Tom', 'Terry', 'Eric', 'John'])
删除最左端元素后的队列: deque(['Tom', 'Terry', 'Eric', 'John'])
删除最右端元素后的队列: deque(['Tom', 'Terry', 'Eric'])