Очередь – это набор объектов, которые определяют простую структуру данных в соответствии с процедурами FIFO (Fast In Fast Out) и LIFO (Last In First Out). Операции вставки и удаления называются операциями постановки и удаления .
Очереди не позволяют произвольный доступ к объектам, которые они содержат.
Как реализовать процедуру FIFO?
Следующая программа помогает в реализации FIFO –
import Queue q = Queue.Queue() #put items at the end of the queue for x in range(4): q.put("item-" + str(x)) #remove items from the head of the queue while not q.empty(): print q.get()
Выход
Вышеуказанная программа генерирует следующий вывод –
Как реализовать процедуру LIFO?
Следующая программа помогает в реализации процедуры LIFO –
import Queue q = Queue.LifoQueue() #add items at the head of the queue for x in range(4): q.put("item-" + str(x)) #remove items from the head of the queue while not q.empty(): print q.get()
Выход
Вышеуказанная программа генерирует следующий вывод –
Что такое приоритетная очередь?
Очередь приоритетов – это структура данных контейнера, которая управляет набором записей с упорядоченными ключами, чтобы обеспечить быстрый доступ к записи с наименьшим или наибольшим ключом в указанной структуре данных.
Как реализовать приоритетную очередь?
Реализация очереди приоритетов выглядит следующим образом –
import Queue class Task(object): def __init__(self, priority, name): self.priority = priority self.name = name def __cmp__(self, other): return cmp(self.priority, other.priority) q = Queue.PriorityQueue() q.put( Task(100, 'a not agent task') ) q.put( Task(5, 'a highly agent task') ) q.put( Task(10, 'an important task') ) while not q.empty(): cur_task = q.get() print 'process task:', cur_task.name
Выход
Вышеуказанная программа генерирует следующий вывод –