中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何實現數據結構-循環隊列的操作方法

發布時間:2021-04-26 11:00:17 來源:億速云 閱讀:318 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Python如何實現數據結構-循環隊列的操作方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

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如何實現數據結構-循環隊列的操作方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

利辛县| 姜堰市| 招远市| 祥云县| 伊宁市| 彭山县| 仙居县| 辽宁省| 仁怀市| 东港市| 商城县| 葫芦岛市| 奉新县| 蒲城县| 宜春市| 志丹县| 江城| 深水埗区| 栾川县| 梁平县| 习水县| 金堂县| 景洪市| 合山市| 江口县| 咸宁市| 汝阳县| 胶南市| 双城市| 孟村| 资中县| 玉山县| 晋江市| 沙田区| 东莞市| 巢湖市| 霍城县| 宁安市| 剑川县| 布尔津县| 钟山县|