自定義類,實現帶超時功能佇列結構

2021-10-05 01:40:25 字數 1619 閱讀 5484

實驗內容:

編寫程式,實現自定義類,模擬佇列結構。要求實現入隊、出隊以及修改佇列大小和判斷佇列是否為空、是否為滿的功能,同時要求在入隊時如果佇列已滿則等待指定時間、出隊時如果佇列已空則等待指定時間等輔助功能。

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...