實驗內容:
編寫程式,實現自定義類,模擬佇列結構。要求實現入隊、出隊以及修改佇列大小和判斷佇列是否為空、是否為滿的功能,同時要求在入隊時如果佇列已滿則等待指定時間、出隊時如果佇列已空則等待指定時間等輔助功能。
def init(self, size = 20):
self._content =
self._size = size
self._current = 0
def setsize(self, size):
if size < self._current:
#如果縮小佇列,應刪除後面的元素
for i in range(size, self._current)[::-1]:
del self._content[i]
self._current = size
self._size = size
def put(self, v, timeout=999999):
#模擬入隊,在列表尾部追加元素
if self._current < self._size:
self._current = self._current+1
else:
#佇列滿,阻塞,超時放棄
for i in range(timeout):
time.sleep(1)
if self._current < self._size:
self._current = self._current+1
break
else:
return '佇列已滿,超時放棄'
def get(self, timeout=999999):
#模擬出隊,從列表頭部彈出元素
if self._content:
self._current = self._current-1
return self._content.pop(0)
else:
#隊列為空,阻塞,超時放棄
for i in range(timeout):
time.sleep(1)
if self._content:
self._current = self._current-1
return self._content.pop(0)
#pop() 函式用於移除列表中的乙個元素(預設最後乙個元素),並且返回該元素的值
else:
return '隊列為空,超時放棄'
def show(self):
#如果列表非空,輸出列表
if self._content:
print(self._content)
else:
print('the queue is empty')
def empty(self):
self._content =
self._current = 0
def isempty(self):
return not self._content
def isfull(self):
return self._current == self._size
Python自定義佇列類
佇列 queue 是先進先出 fifo,first in first out 的線性表。在具體應用中通常用鍊錶或者陣列來實現。佇列只允許在後端 稱為rear 進行插入操作,在前端 稱為front 進行刪除操作。佇列的操作方式和堆疊類似,唯一的區別在於佇列只允許新資料在後端進行新增。queue是pyt...
自定義帶計數功能的Edittext
之前有專案用到帶index計數的editext,覺得有挺多朋友用的到所以把他放在了github上。使用方法github上有寫,我這裡寫下工作原理 繼承editiext,在ondraw 中將右下角的數字繪製上去 canvas.drawtext text,canvas.getwidth paint.me...
資料結構 自定義佇列
用鍊錶建立佇列 public class linkqueueimplements queue public node e e public node override public string tostring private node head private node tail private...