隊列

隊列是對象的集合,它定義了FIFO(先進先出)和LIFO(後進先出)過程之後的簡單數據結構。 插入和刪除操作被稱爲入隊和出隊操作。

隊列不允許隨機訪問它們包含的對象。

如何實現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

執行上述程序生成以下輸出 -

隊列