Python—使用列表构造队列数据结构
2024-08-29 22:52:06
队列的概念
只允许在一端插入数据操作,在另一端进行删除数据操作的特殊线性表;进行插入操作的一端称为队尾(入队列),进行删除操作的一端称为队头(出队列);队列具有先进先出(FIFO)的特性。
# _*_ coding=utf-8 _*_ class Queue(object): def __init__(self, size=100):
self.queue = [0 for _ in range(size)]
self.size = size
self.rear = 0
self.front = 0 def push(self, element):
if not self.is_filled():
self.rear = (self.rear + 1) % self.size
self.queue[self.rear] = element
else:
raise IndexError("Queue is filled") def pop(self):
if not self.is_empty():
self.front = (self.front + 1) % self.size
return self.queue[self.front]
else:
raise IndexError("Queue is empty") def is_empty(self):
return self.rear == self.front def is_filled(self):
return (self.rear + 1) % self.size == self.front q = Queue(5)
for i in range(4):
q.push(i)
print(q.queue)
print(q.pop())
最新文章
- 11 Set和Map数据结构
- NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇
- onMeasure流程解析
- 静态代码检查工具-PMD初学者入门篇
- phpcms v9联动菜单的调用方法_详解get_linkage函数
- POJ 2182 Lost Cows (线段树)
- Swift - 使用socket进行通信(附聊天室样例)
- svn: E200007: CHECKOUT can only be performed on a version resource
- js根据出生年月日换算年龄
- 编译安装 python 2.7
- 51NOD 1238 最小公倍数之和 V3 [杜教筛]
- RoIPooling
- ansible-play中关于标签tages,handler,notify的使用
- Android Studio手动打包
- HTTP max-age与Expires的分别
- Ubuntu下面的docker开启ssh服务
- gearman的持久化,以mysql的方式
- ios 内存管理与property copy strong weak assign
- shell脚本把一些请求量非常高的ip给拒绝掉
- 【架构】MVC模式
热门文章
- 吴裕雄--天生自然java开发常用类库学习笔记:线程操作案例——生产者与消费者
- Unity 脚本中的update,fixedupdate,lateupdate
- 关于无法下载sklearn中的MNIST original数据集的问题
- 存储器HK1225-7EQ 使用说明书资料
- Python基础笔记:input()输入与数据类型转换
- 七十七、SAP中数据库操作之多表联合查询
- 127-PHP类通过魔术变量判断类中是否存在指定的方法
- Java中定义常量(Constant) 的几种方法
- 【转载】webDriver拾级而上·之五 iframe的处理
- P1018 锤子剪刀布