欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 1662 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條評論
主站蜘蛛池模板: 男女激情视频在线观看 | 色屁屁www影院入口免费观看 | 三级视频网站 | 老版奇米影视 | 男女视频免费在线观看 | 狙击兵2通古电影高清 | 国产精品久久久一区二区三区 | www.成人.com | 欧美成人三级一区二区在线观看 | 天天综合网在线观看视频 | 日韩高清免费在线观看 | 中文字幕日韩一区二区 | 91精品成人免费国产 | 日韩欧美中文字幕在线观看 | 亚洲成人在线网 | 美女视频黄色片 | 色接久久| caoporn视频| 久久成人精品视频 | 国产精品18hdxxxⅹ在线 | 久草在线视频中文 | 亚洲精品视频在线 | 欧美精品综合一区二区三区 | 成人性视频免费网站 | 国产在线观 | 久久高清免费视频 | 色哟哟哟在线观看www | 大学生a级毛片免费视频 | 成年网址网站在线观看 | 久久人人爽人人爽 | av在线大全| 亚洲久久久 | 欧美交换乱理伦片120秒 | 色综合97天天综合网 | 欧美高清极品videossex | 久久综合九色综合97婷婷群聊 | 九九毛片 | 欧美久久久无码精品亚洲日韩小说 | 国产福利视频一区 | 91精品观看91久久久久久 | 天天艹夜夜艹 |