基于python实现顺序存储的队列代码
"""
队列-顺序存储
seqqueue.py
代码实现 """ # 自定义异常类
class QueueError(Exception):
pass # 队列-顺序存储代码-入队,出队,判断空满
class SeqQueue:
def __init__(self):
# 创建空列表作为存储空间
self._elems = [] # 入队-加到最后,内存不移动
def enqueue(self,val):
self._elems.append(val) # 出队-头部删除,内存移动
def dequeue(self):
# 空队列,报异常
# if not self._elems: # 如果为空,假假真
if self._elems == []:
raise QueueError("queue is empty")
# 非空队列,pop出第一个元素
return self._elems.pop(0) # 判断空满
def is_empty(self):
return self._elems == [] # 打印队列
def print_queue(self):
# 先判断是否为空
if self._elems == []:
raise QueueError("queue is empty")
else:
for item in self._elems:
print(item,end= " ")
print() # 反转队列 或者用顺序栈的进出栈(出队入栈,出栈入队)方法
def reverse_queue(self):
"""
算法:1.设置中间列表,遍历n-1次从队列出列,值存入中间列表
2.遍历n-1次,从中间列表倒着入列
:return: 反转后的队列
"""
if self.is_empty():
raise QueueError("queue is empty")
middle_list = []
len_iterator = len(self._elems)-1
for i in range(len_iterator):
middle_list.append(self.dequeue())
for i in range(len_iterator):
self.enqueue(middle_list.pop()) print("-"*30)
if __name__ == "__main__":
sq = SeqQueue()
#sq.out_queue()
# sq.enqueue(1)
# sq.enqueue(2)
# sq.enqueue(3)
# sq.enqueue(4)
# sq.print_queue()
# sq.dequeue()
#sq.print_queue()
# list01 = []
# for i in range(2):
# list01.append(sq.dequeue())
# for i in range(2):
# sq.enqueue(list01[-i-1])
sq.reverse_queue()
sq.print_queue()
基于python实现顺序存储的队列代码的更多相关文章
- 基于python实现链式队列代码
""" 链式存储-队列 linkqueue.py 代码实现 思路: 1.入队, 2.出队, 3.判断空满 """ # 异常类 class Q ...
- 基于python实现顺序存储的栈
""" 栈 sstack.py 栈模型的顺序存储 重点代码 思路总结: 1.列表是顺序存储,但功能多,不符合栈的模型特征 2.利用列表,将其封装,提供接口方法 " ...
- 基于python内置方法进行代码混淆
0x00 动态加载模块 在python脚本中,直接使用import os.import subprocess或from os import system这种方法很容易被规则检测,即使使用其它执行命令的 ...
- 基于Python使用SVM识别简单的字符验证码的完整代码开源分享
关键字:Python,SVM,字符验证码,机器学习,验证码识别 1 概述 基于Python使用SVM识别简单的验证字符串的完整代码开源分享. 因为目前有了更厉害的新技术来解决这类问题了,但是本文作 ...
- Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现
基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现 by:授客 QQ:1033553122 测试环境 功能需求 实现思路 代码实践(关键技术点实现) 代码模块组织 ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- 基于RabbltMQ延迟插件实现延迟队列代码示例
上一篇文章写了docker安装RabbitMQ及延迟插件的安装,这篇的话是基于RabbitMQ延迟插件实现延迟队列的示例 那么废话不多说 直接上代码!! 首先创建延迟队列配置类 DelayedQueu ...
- 代码编辑器[0] -> Vim/gVim[0] -> 基于 Python 的 gVim 环境配置(Windows)
环境配置 / Environment Setup 基于Python开发的 gVim 环境配置(Windows) 使用方式参考 Vim 的使用. 1 基于vundle进行配置 Vim有多个扩展管理器, ...
- 学习Keras:《Keras快速上手基于Python的深度学习实战》PDF代码+mobi
有一定Python和TensorFlow基础的人看应该很容易,各领域的应用,但比较广泛,不深刻,讲硬件的部分可以作为入门人的参考. <Keras快速上手基于Python的深度学习实战>系统 ...
随机推荐
- 关于h5游戏开发,你想了解的一切都在这儿!
2020年,受疫情影响,线下产业红利褪去,线上迎来的新一轮的高峰.众多商家纷纷抓住了转型时机,开启了流量争夺战.H5游戏定制无疑是今年引流的大热门.如何开发一款有趣.有爆点.用户爱买单的好游戏呢? ...
- 面试:为了进阿里,重新翻阅了Volatile与Synchronized
该系列文章收录在公众号[Ccww技术博客],原创技术文章早于博客推出 在深入理解使用Volatile与Synchronized时,应该先理解明白Java内存模型 (Java Memory Model, ...
- python中实现参数化的原理
k就是 <参数名>
- 吴恩达《深度学习》-课后测验-第一门课 (Neural Networks and Deep Learning)-Week 3 - Shallow Neural Networks(第三周测验 - 浅层神 经网络)
Week 3 Quiz - Shallow Neural Networks(第三周测验 - 浅层神经网络) \1. Which of the following are true? (Check al ...
- Scanner输入方法
输入语句: * import java.util.Scanner; * System.out.println("请输入你想输入的东西:"); * Scanner (自定义)sc = ...
- Jenkins持续集成git、gitlab、sonarqube(7.0)、nexus,自动化部署实战,附安装包,严禁转载!!!
导读 之前用的都是SVN,由于工作需要用到Git,求人不如求己,技多不压身,多学一项技能,未来就少求别人一次,系统的学一遍,自己搭建一整套环境,自动化部署(自动发版),代码质量检测等等(为啥不用doc ...
- 树莓派Raspberry Pi OS(原Raspbian)系统常用配置
首次开机自动连接WIFI 在资源浏览器中打开刚写好Raspberry Pi OS(之前叫Raspbian)系统的SD卡,如果有boot目录则在boot目录中新建一个名为wpa_supplicant.c ...
- HotSpot VM 中的JIT分类
在HotSpot VM中内嵌有两个JIT编译器,分别为Client Compiler和Server Compiler,但大多数情况下我们简称为C1编译器和C2编译器.开发人员可以通过如下命令显式指定J ...
- Redis的五大数据类型以及key的相关操作命令
Redis的五大数据类型 redis的数据都是以key/value存储,所以说,五大类型指的是value的数据类型 String 字符串,作为redis的最基本数据类型 redis中的string类型 ...
- SSM框架整合 IDEA_Maven
首先是配置web的web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app versio ...