博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 用数组实现队列
阅读量:5338 次
发布时间:2019-06-15

本文共 1550 字,大约阅读时间需要 5 分钟。

# 数组有一个固定的长度。头指针和尾指针,都指向数组第一个值。# 当进行push操作的时候,头指针后移。当进行pop操作的时候,尾指针向后移# 当到达最后一个值的时候,重新指向第一个值。取模 %queue_size()# 首先实现一个数组class Array(object):    def __init__(self,size = 32):        self._size = size        self._items = [None] * size  # 容器_items, 是一个每个值为None的列表    def __getitem__(self, index):      # 实现下标访问        return self._items[index]    def __setitem__(self, index, value):        self._items[index] = value    def __len__(self):        return self._size    def clear(self, value=None):        for i in range(len(self._items)):            self._items[i] = value    def __iter__(self):        for item in self._items:            yield itemclass ArrayQueue(object):    def __init__(self, maxsize):        self.maxsize = maxsize        self.array = Array(maxsize)        self.head = 0        self.tail = 0    def push(self, value):        if len(self) >= self.maxsize:            raise Exception('queue full')        self.array[self.head % self.maxsize] = value        self.head += 1    def pop(self):        value = self.array[self.tail % self.maxsize]        self.tail += 1        return value    def __len__(self):        return self.head - self.taildef test_arrrayqueue():    import pytest    size = 5    q = ArrayQueue(size)    for i in range(size):        q.push(i)    assert len(q) == size    assert q.pop() == 0    assert q.pop() == 1    q.push(5)    assert len(q) == 4    assert q.pop() == 2    assert q.pop() == 3    assert q.pop() == 4    assert q.pop() == 5    assert len(q) == 0

 

转载于:https://www.cnblogs.com/dairuiquan/p/10380504.html

你可能感兴趣的文章
Web.Config文件配置之配置Session变量的生命周期
查看>>
mysql导入source注意点
查看>>
Python: 对于DataFrame.loc传入列表和传入元组输出区别的理解
查看>>
USACO / Sorting a Three-Valued Sequence (简单题,方法正确性待证)
查看>>
Android开发中 .9.png格式图形设计:
查看>>
Linux常见命令
查看>>
ASP.NET Page执行顺序如:OnPreInit()、OnInit()
查看>>
linux下编译安装nginx
查看>>
adb命令
查看>>
SQL自定义排序 ORDER BY
查看>>
Modal模态框scrolltop保留上次位移的解决方案
查看>>
python 函数(一)
查看>>
我说我在总结谁会信。。
查看>>
数据库索引的作用和长处缺点
查看>>
Laravel 安装代码智能提示扩展「laravel-ide-helper」
查看>>
java开发配套版本
查看>>
MySQL的 Grant命令权限分配
查看>>
非阻塞的c/s,epoll服务器模型
查看>>
YII框架安装过程总结
查看>>
HDOJ(HDU) 1862 EXCEL排序(类对象的快排)
查看>>