您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python如何實現數據結構-循環隊列的操作方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
python的數據類型:1. 數字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型。5. 元組,元組用”()”標識,內部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數據組合。
下面,我們來介紹循環隊列。
循壞隊列
循環隊列,就是將普通的隊列首尾連接起來, 形成一個環狀,并分別設置首尾指針,用來指明隊列的頭和尾。每當我們插入一個元素,尾指針就向后移動一位,當然,在這里我們隊列的最大長度是提前定義好的,當我們彈出一個元素,頭指針就向后移動一位。
這樣,列表中就不存在刪除操作,只有修改操作,從而避免了刪除前面節點造成的代價大的問題。
好,話不多說,我們用代碼來實現一下
class Loopqueue: def __init__(self, length): self.head = 0 self.tail = 0 self.maxSize = length self.cnt = 0 self.__list = [None]*length
這里同樣,我們定義一個隊列類,在實例化循環隊列的時候,要求指定隊列的大小,除了首尾指針以及隊列最大長度之外,我們還聲明一個表示隊列當前長度的屬性cnt。
接下來我們給隊列增加一些操作:
判空
def isEmpty(self): return self.cnt == 0
判滿
def isFull(self): return self.cnt == self.maxSize
添加元素
def push(self, data): if self.isFull(): return False if self.isEmpty(): self.__list[0] = data self.head = 0 self.tail = 0 self.cnt = 1 return True self.tail = (self.tail+1)%self.maxSize self.cnt += 1 self.__list[self.tail] = data return True
彈出元素
def pop(self): if self.isEmpty(): return False data = self.__list[self.head] self.head = (self.head+1)%self.maxSize self.cnt -= 1 return data
清空隊列
def clear(self): self.head = 0 self.tail = 0 self.cnt = 0 return True
定義len和print函數
def __len__(self): return self.cnt def __str__(self): s = '' for i in range(self.cnt): index = (i + self.head) % self.maxSize s += str(self.__list[index])+' ' return s
OK,我們的循環隊列類就定義好了,如果你看過介紹隊列的文章,就會發現循環隊列和普通隊列的操作在邏輯上還是有一些相似的。
關于“Python如何實現數據結構-循環隊列的操作方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。