python使用迴圈列表實現佇列,自己管理列表

2021-10-20 04:15:10 字數 1127 閱讀 6029

兄弟萌,話不多說,上**!

class queueunderflow(valueerror):

pass

class squeue():

def __init__(self,init_len=8):

self._len = init_len # 儲存區長度

self._elems = [0]*init_len # 元素儲存

self.head = 0 # 表頭元素下標

self._num = 0 # 元素個數

def is_empty(self):

return self._num == 0

def peek(self):

if self._num == 0:

raise queueunderflow

return self._elems[self._head]

def dequeue(self):

if self._num == 0:

raise queueunderflow

e = self._elems[self._head]

self._head = (self._head+1) % self._len

self._num -= 1

return e

def enqueue(self,e):

if self._num == self._len: # 佇列滿,則增加佇列長度

self._extend()

self._elems[(self._head+self._num)%self._len] = e # 進隊位置

self._num +=1

def _extend(self):

"""擴充套件佇列長度"""

old_len = self._len

self._len *=2

new_elems = [0]*self._len

for i in range(old_len):

new_elems[i] = self._elems[(self._head+i) % old_len] # 搬運,重新賦值,從0開始

self._elems, self._head = new_elems, 0

python實現迴圈列表

class loop queue2 object 實現迴圈列表 def init self,maxsize 初始化,命令頭部元素的序號,尾部元素的序號,定義序列列表 param maxsize 傳入列表的最大長度 self.queue none maxsize self.maxsize maxsiz...

c實現雙向迴圈列表

linklist2.c linklist 雙向迴圈鍊錶 include include define maxsize 100 define elemtype int elemtype a maxsize int n typedef struct node dnode,dlinklist dlinkl...

Python基礎四(for迴圈 列表)

列表i 0while i 5 i 1if i 3 break print i 輸出結果為 0 1 2i 0while i 5 i 1if i 3 continue print i 輸出結果為 1 2 4 5for迴圈語法 for 變數 in 序列 遍歷的規則 塊range start,stop st...