欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 色综合久久综合欧美综合图片 | 亚洲 欧美 精品 | 手机看片国产免费现在观看 | 狠狠五月深爱婷婷网免费 | 亚洲第一视频 | 91看片淫黄大片欧美看国产片 | 欧美中文在线观看 | 亚洲午夜av久久乱码 | 午夜精品一区二区三区免费视频 | 国产人妻人伦精品潘金莲 | 日韩不卡在线 | 一级特黄aaa免费 | 日日操夜夜操免费视频 | 无线日本视频精品 | 四月婷婷七月婷婷综合 | 国产欧美久久一区二区三区 | 99精品国产福利在线观看 | 欧美日批 | 欧美资源在线观看 | 三级网站免费观看 | 日韩成人av在线播放 | 91网站免费观看 | 日本黄 色 成 年 人免费观看 | 日本www视频在线观看 | 色婷婷社区 | 在线视频a| 山岸逢花在线观看无删减 | 欧美大片一区 | 国产亚洲一区二区三区在线观看 | a在线免费观看视频 | 天天精品在线 | 日本高清天码一区在线播放 | 天天人人 | 天天爽天天碰狠狠添 | 中文在线一区二区 | 日韩第一 | 成人亚洲一区二区色情无码潘金莲 | 蜜臀传煤mv在线观看 | 五月天在线影院 | 亚洲精品在线视频观看 | 国产换爱交换乱理伦片 |