溫馨提示×

溫馨提示×

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

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

Python如何實現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊列的操作方法

發(fā)布時間:2021-04-26 11:00:17 來源:億速云 閱讀:310 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Python如何實現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊列的操作方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

python的數(shù)據(jù)類型有哪些?

python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標(biāo)識,內(nèi)部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復(fù)的數(shù)據(jù)組合。

下面,我們來介紹循環(huán)隊列。

循壞隊列

循環(huán)隊列,就是將普通的隊列首尾連接起來, 形成一個環(huán)狀,并分別設(shè)置首尾指針,用來指明隊列的頭和尾。每當(dāng)我們插入一個元素,尾指針就向后移動一位,當(dāng)然,在這里我們隊列的最大長度是提前定義好的,當(dāng)我們彈出一個元素,頭指針就向后移動一位。

這樣,列表中就不存在刪除操作,只有修改操作,從而避免了刪除前面節(jié)點造成的代價大的問題。

好,話不多說,我們用代碼來實現(xiàn)一下

class Loopqueue:
 def __init__(self, length):
  self.head = 0
  self.tail = 0
  self.maxSize = length
  self.cnt = 0
  self.__list = [None]*length

這里同樣,我們定義一個隊列類,在實例化循環(huán)隊列的時候,要求指定隊列的大小,除了首尾指針以及隊列最大長度之外,我們還聲明一個表示隊列當(dāng)前長度的屬性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函數(shù)

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,我們的循環(huán)隊列類就定義好了,如果你看過介紹隊列的文章,就會發(fā)現(xiàn)循環(huán)隊列和普通隊列的操作在邏輯上還是有一些相似的。

關(guān)于“Python如何實現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊列的操作方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI