自定义类,实现带超时功能队列结构

实验内容:
编写程序,实现自定义类,模拟队列结构。要求实现入队、出队以及修改队列大小和判断队列是否为空、是否为满的功能,同时要求在入队时如果队列已满则等待指定时间、出队时如果队列已空则等待指定时间等辅助功能。

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._content.append(v)

        self._current = self._current+1

    else:

        #队列满,阻塞,超时放弃

        for i in range(timeout):

            time.sleep(1)

            if self._current < self._size:

                self._content.append(v)

                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
  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值