python-數據結構-隊列的基本實現

1.0什麼是隊列

        隊列是項的有序結合,其中添加新項的一端稱爲隊尾,移除項的一端稱爲隊首。當一個元素從隊尾進入隊列時,一直向隊首移動,直到它成爲下一個需要移除的元素爲止。最近添加的元素必須在隊尾等待。集合中存活時間最長的元素在隊首,這種排序成爲 FIFO,先進先出,也被成爲先到先得。

        隊列的最簡單的例子是我們平時不時會參與的列。排隊等待電影,在雜貨店的收營臺等待,在自助餐廳排隊等待(這樣我們可以彈出托盤棧)。行爲良好的線或隊列是有限制的,因爲它只有一條路,只有一條出路。不能插隊,也不能離開。你只有等待了一定的時間才能到前面。Figure 1 展示了一個簡單的 Python 對象隊列

隊列抽象數據類型由以下結構和操作定義。如上所述,隊列被構造爲在隊尾添加項的有序集合,並且從隊首移除。隊列保持 FIFO 排序屬性。 隊列操作如下。

  1. Queue() 創建一個空的新隊列。 它不需要參數,並返回一個空隊列。
  2. enqueue(item) 將新項添加到隊尾。 它需要 item 作爲參數,並不返回任何內容。
  3. dequeue() 從隊首移除項。它不需要參數並返回 item。 隊列被修改。
  4. isEmpty() 查看隊列是否爲空。它不需要參數,並返回布爾值。
  5. size() 返回隊列中的項數。它不需要參數,並返回一個整數。

新建一個queue_definition.py文件

class Queue(object):
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def enqueue(self, item):
        self.items.insert(0, item)

    def dequeue(self):
        return self.items.pop()

    def size(self):
        return len(self.items)

    def list1(self):
        return self.items

再新建一個文件進行測試

from python_basic_queue.queue_definition import Queue

# 初始化一個隊列
q = Queue()

# 隊列是否爲空
print(q.isEmpty())

# 添加一個元素
q.enqueue(8.4)

# 當前隊列的元素
print(q.list1())

# 添加一個元素
q.enqueue(1.2)

# 當前隊列的元素
print(q.list1())

# 添加一個元素
q.enqueue("python")

# 當前隊列的元素
print(q.list1())

# 隊列是否爲空
print(q.isEmpty())

# 隊列出一個元素
q.dequeue()

# 當前隊列的元素
print(q.list1())

# 隊列出一個元素
q.dequeue()

# 當前隊列的元素
print(q.list1())

# 隊列出一個元素
q.dequeue()

# 當前隊列的元素
print(q.list1())

# 隊列是否爲空
print(q.isEmpty())
發佈了87 篇原創文章 · 獲贊 21 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章