亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 1803 0

今天我們來到了循環隊列這一節,之前的文章中,我介紹過了用python自帶的列表來實現隊列,這是最簡單的實現方法。

但是,我們都知道,在列表中刪除第一個元素和刪除最后一個元素花費的時間代價是不一樣的,刪除列表的第一個元素,那么在它之后的所有元素都要進行移動。所以當列表特別長的時候,這個代價就比較明顯了。我們本文介紹的循環隊列可以避免這個問題,同樣我們上篇文章提到的用鏈表實現的方法也可以避免。

下面,我們來介紹循環隊列。

循壞隊列

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

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

好,話不多說,我們用代碼來實現一下

            
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 實現數據結構-循環隊列的操作方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美又粗又硬 | 色激情五月 | 国产成人精品一区 | 草久在线观看 | 四虎影视最新网站在线播放 | 在线91精品亚洲网站精品成人 | 奇米网7777 | 美国毛片免费观看 | 中文日产国产精品久久 | 免费一级a毛片在线播 | 四虎最新永久免费网址 | 高清视频在线播放 | aaa一区二区三区 | 日日碰天天久久 | 欧美日韩一区二区不卡三区 | 草逼综合 | 久青草国产免费观看 | 久久精品国产精品青草图片 | 亚洲精品一区二区三区美女 | 国产亚洲欧美在在线人成 | 男人的天堂久久香蕉国产 | 亚洲成人18 | 99爱视频免费高清在线观看 | 久久免费视频3 | 久久综合五月 | 精品亚洲永久免费精品 | 2019年国产不卡在线刷新 | 97影院午夜在线观看视频 | 久久久久久不卡 | 手机看片国产免费 | 日本sese| 成人免费一级毛片在线播放视频 | 在线观看国产一区二三区 | 九九九精品视频 | 夜夜操综合 | 欧美日本视频在线观看 | 欧美日韩亚洲精品一区二区三区 | 日日夜夜精品视频 | 欧美成人免费在线视频 | 欧美久久久久 | 青青草这里只有精品 |