python实现队列

队列是一种先进先出的数据类型,它的跟踪原理类似于在超市收银处排队,队列里的的第一个人首先接受服务,新的元素通过入队的方式添加到队列的末尾,而出队就是将队列的头元素删除。

我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()pop()方法可以实现队列的入队enqueue和出队dequeue的操作,上面栈一个元素每次出去是列表的最后一个,直接用list.pop()出栈,而出队列每次是第一个,所以要用list.pop(0)出队列

代码如下:

class Queue():  
    def __init__(self,size):  
        self.size=size; 
        self.front=-1;  
        self.rear=-1;  
        self.queue=[];
    def enqueue(self,ele):  #入队操作  
        if self.isfull():  
            raise exception("queue is full");
        else:  
            self.queue.append(ele)
            self.rear=self.rear+1
    def dequeue(self):      #出队操作  
        if self.isempty():  
            raise exception("queue is empty")
        else:  
            self.front=self.front+1
            return self.queue[self.front]
    def isfull(self):  
        return self.rear-self.front+1==self.size
    def isempty(self):  
        return self.front==self.rear
       
q=Queue(10);  
for i in range(3):  
    q.enqueue(i)
print q.dequeue()
print q.isempty()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏同步博客

制作类似ThinkPHP框架中的PATHINFO模式功能

  搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大。

21130
来自专栏大数据架构

Java进阶(二)当我们说线程安全时,到底在说什么

这一点,跟数据库事务的原子性概念差不多,即一个操作(有可能包含有多个子操作)要么全部执行(生效),要么全部都不执行(都不生效)。

464130
来自专栏CaiRui

Shell-3-文件之名

1.生成任意大小的文件 [root@localhost tmp]# dd if=/dev/zero of=junk.data bs=1M count=1 记录了...

21490
来自专栏Ken的杂谈

WCF常见问题及解决办法

一、问题:这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致

15620
来自专栏CSDN技术头条

Java 并发编程之美-线程相关的基础知识

借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了;相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在...

20130
来自专栏企鹅号快讯

用 Python 处理 HTML 转义字符的5种方式

Photo byAhmed SaffuonUnsplash 写爬虫是一个发送请求,提取数据,清洗数据,存储数据的过程。在这个过程中,不同的数据源返回的数据格式各...

44590
来自专栏前端架构与工程

【译】《Understanding ECMAScript6》- 第八章-Module

目录 模块是什么 使用基础 接口标识符重命名 缺省接口 Re-exporting 非绑定import 总结 JavaScript令人困惑并且易引发错误的特性之一...

23860
来自专栏SnailTyan

Python的命令行参数解析

命令行参数解析在编程语言中基本都会碰到,Python中内置了一个用于命令项选项与参数解析的模块argparse。下面主要介绍两种解析Python命令行参数的方式...

28100
来自专栏angularejs学习篇

angularjs学习第六天笔记(指令简介学习)

  您好,由于周末有事情,没哟学习angularjs,几天晚上开始继续学习angularjs,坚持加油每一天。谢谢

11520
来自专栏Java技术栈

JDK9新特性实战:简化流关闭新姿势。

做Java开发的都知道,每个资源的打开都需要对应的关闭操作,不然就会使资源一直占用而造成资源浪费,从而降低系统性能。 关于资源的关闭操作,从JDK7-JDK9有...

36680

扫码关注云+社区

领取腾讯云代金券