Python实现队列数据结构

队列是一种应用广泛的数据结构,是一种只允许在一端进行插入操作,另一端进行删除操作的线性表,具有先进先出(First-In-First-Out)的原则。队列的两种主要操作是:向队列中插入新元素和删除队列中的元素。插入操作也叫做入队,删除操作也叫做出队。入队操作在队尾插入新元素,出队操作删除队头的元素。

Python中并没有提供关于队列函数,所以一般把列表当做队列来使用,下面通过类定义队列中的常用操作:

class queue:
    def __init__(self):
        self.items = []

    def isqueueEmpty(self):
        return self.items == []

    def enqueue(self, item):
        self.items.insert(0,item)

    def dequeue(self):
        return self.items.pop()

    def queuesize(self):
        return len(self.items)

queue() 定义一个空队列,无参数,返回值是空队列。 isqueueEmpty() 检测队列是否为空。无参数,返回布尔值。 enqueue() 在队列尾部加入一个数据项,参数是数据项,无返回值。 dequeue() 删除队列头部的数据项,不需要参数,返回值是被删除的数据,队列本身有变化。 queuesize() 返回队列数据项的数量。无参数,返回一个整数。

测试代码:

q=queue()
q.enqueue('first')
q.enqueue('second')
y=q.isqueueEmpty()
print('是否为空:',y)
print('队列元素个数:',q.queuesize())
print('出队:',q.dequeue())
print('出队:',q.dequeue())
print('是否为空:',q.isqueueEmpty())

打印结果: 是否为空: False 队列元素个数: 2 出队: first 出队: second 是否为空: True

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小灰灰

JDK容器学习之Queue:ConcurrentLinkedQueue

并发安全的链表队列 ConcurrentLinkedQueue 并发安全的链表队列,主要适用于多线程环境中;底层数据结构为链表,由于队列本身频繁的出队和进队,...

1966
来自专栏小二的折腾日记

day5(面向对象2)

##set set:无序,不可以重复元素。 hashset:数据结构是哈希表,线程非同步的,保证元素唯一性的原理,判断元素的hashCode值是否相同。如果相同...

433
来自专栏糊一笑

面试题解法二:逆波兰表达式计算'1 + (5 - 2) * 3'

昨天发了一个面试题:关于一道面试题【字符串 ‘1 + (5 - 2) * 3’,怎么算出结果为10,’eval’除外】,受到了各位大大的指点,用一个比较简单的解...

3117
来自专栏Python爱好者

Java基础笔记17

1236
来自专栏二进制文集

Google Protocol Buffers 数据交换协议

protobuf(Protocol Buffers)是Google推出的一个结构化数据交换协议,用于传递自定义的消息格式,可用于同一台机器的进程间、不同设备进程...

803
来自专栏静晴轩

Javascript数组操作

使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间;思虑下,堪能如此...

3848
来自专栏zaking's

用js来实现那些数据结构04(栈01-栈的实现)

  其实说到底,在js中栈更像是一种变种的数组,只是没有数组那么多的方法,也没有数组那么灵活。但是栈和队列这两种数据结构比数组更加的高效和可控。而在js中要想模...

34011
来自专栏有趣的Python

3-Linux C语言结构体-学习笔记

将#include <stdio.h>中stdio.h展开,将未注释的内容直接写入.i文件。

851
来自专栏python 实践经验

python面试题目解析--iterator考察点和list考察点

为什么会是这个结果呢? 我们首选需要了解Python的一个循环机制:Python中的for循环实质是一个迭代器iterator,它不断调用next方法返回下一...

1463
来自专栏nnngu

数据结构06 队列

上一篇讲了栈,这一篇要讲的是我们常用的队列,我会从以下几个方面进行总结。 1、什么是队列  2、队列的存储结构 3、队列的常用操作及实现代码 1、什么是队列  ...

2608

扫码关注云+社区