python模擬隊列(入出/清空隊列基本操作)

隊列簡介

隊列與棧的結構類似,但不同的是隊列的出隊操作是在隊首元素進行的刪除操作。基本原則是先進先出。

隊列如何用python模擬

用列表,列表的功能非常強大,既能模擬堆棧又能模擬隊列,出隊的時候

  • 取出隊首
  • 挪動隊列元素
  • 整體隊長-1

入隊的時候,直接在尾部加入:

list.append(element)

如果對數據結構感興趣,可以查看這篇博文:
執念斬長河專欄數據結構–目錄

例子:用python模擬隊列的入出隊操作

實驗效果

在這裏插入圖片描述
實驗代碼:

# -*- coding:utf-8 -*-

class PyQueue:
    def __init__(self, size=20):
        self.queue = []
        self.size = size
        self.end = -1

    def setSize(self, size):
        self.size = size

    def In(self,element):
        if self.end < self.size - 1:
            self.queue.append(element)
            self.end = self.end + 1
        else:
            raise QueueException('PyQueueFull')

    def Out(self):
        if self.end != -1:
            element = self.queue[0] # 取出出隊的元素
            self.queue = self.queue[1:] # 挪位置
            self.end = self.end - 1 # 隊長-1
            return element
        else:
            raise  QueueException('PyQueueEmpty')

    def End(self):
        return self.end

    def empty(self):
        self.queue = []
        self.end = -1

class QueueException(Exception):
    def __init__(self,data):
        self.data = data

    def __str__(self):
        return self.data


if __name__ == '__main__':
    print('創建隊列.....')
    queue = PyQueue()
    print('入隊列....')
    for i in range(20):
        queue.In(i);
    print('出隊列...')
    print(queue.Out())
    print('打印隊尾元素....')
    print(queue.End())
    print('清空隊列....')
    queue.empty()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章