队列(queue),是一种操作受限的线性表。只允许在队列的一端添加元素,在队列的另一端删除元素。能添加元素的一端称为队尾,能删除元素的一端称为队头。

队列最大的特性是:先进先出(FIFO,first in first out)

下面为普通队列的python实现:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "hsz" class Queue(object):
"""队列"""
def __init__(self, maxsize=0):
"""maxsize<=0代表队列不限定大小"""
self.queue = []
self.maxsize = maxsize def is_empty(self):
return len(self.queue) == 0 def is_full(self):
if self.maxsize <= 0:
return False
else:
return len(self.queue) == self.maxsize def enqueue(self, item):
"""入队"""
if self.is_full():
raise Exception("Queue is full!")
else:
self.queue.append(item) def dequeue(self):
"""出队"""
if self.is_empty():
raise IndexError("Queue is empty!")
else:
return self.queue.pop(0) def size(self):
return len(self.queue) def get_front(self):
"""
返回队头元素
:return:
"""
if self.is_empty():
raise IndexError("Queue is empty!")
else:
return self.queue[0] def get_rear(self):
"""
返回队尾元素
:return:
"""
if self.is_empty():
raise IndexError("Queue is empty!")
else:
return self.queue[-1] def print_queue(self):
return self.queue if __name__ == "__main__":
# 实例化对象队列
queue = Queue()
# 入队四个数
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
queue.enqueue(4)
print(queue.queue) # [1, 2, 3, 4]
print(queue.is_empty()) # False 队列不为空
print(queue.is_full()) # False 队列没有到最大元素
# 出队 先入先出 出的是1 所有剩 [2,3,4]
queue.dequeue()
print(queue.queue)
# 返回队列的元素个数 3
print(queue.size())
# 获取队列的头数据 2
print(queue.get_front())
# 获取队列的尾数据 4
print(queue.get_rear())
# 打印队列所有数据 [2,3,4]
print(queue.print_queue())

打印结果为:

[1, 2, 3, 4]
False
False
[2, 3, 4]
3
2
4
[2, 3, 4]

其他类型待续。。。

队列的python实现的更多相关文章

  1. Python队列服务 Python RQ Functions from the __main__ module cannot be processed by workers.

    在使用Python队列服务 Python RQ 时候的报错: Functions from the __main__ module cannot be processed by workers. 原因 ...

  2. python基础一 ------顺序结构队列的python实现

    队列:先进先出的线性表(FIFO),只允许在一段插入并在另一端取出 以下是python实现 #-*-coding:utf-8-*- #顺序存储队列的python实现 class Queue(objec ...

  3. 数据结构之队列(Python 版)

    数据结构之队列(Python 版) 队列的特点:先进先出(FIFO) 使用链表技术实现 使用单链表技术,在表首尾两端分别加入指针,就很容易实现队列类. 使用顺序表list实现 # 队列类的实现 cla ...

  4. RbbitMQ消息队列及python实现

    1.简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的 ...

  5. 【391】栈与队列,Python实现

    参考:python实现stack(栈)和队列(queue) - hjhmpl123的博客 - CSDN博客 参考:Python3 数据结构 | 菜鸟教程 栈和队列是两种基本的数据结构,同为容器类型.两 ...

  6. 栈和队列在python中的实现

    栈和队列是两种基本的数据结构,同为容器类型.两者根本的区别在于: stack:后进先出 queue:先进先出 PS:stack和queue是不能通过查询具体某一个位置的元素而进行操作的.但是他们的排列 ...

  7. Python与数据结构[2] -> 队列/Queue[0] -> 数组队列的 Python 实现

    队列 / Queue 数组队列 数组队列是队列基于数组的一种实现,其实现类似于数组栈,是一种FIFO的线性数据结构. Queue: <--| 1 | 2 | 3 | 4 | 5 |<-- ...

  8. 数据结构-循环队列(Python实现)

    今天我们来到了循环队列这一节,之前的文章中,我介绍过了用python自带的列表来实现队列,这是最简单的实现方法. 但是,我们都知道,在列表中删除第一个元素和删除最后一个元素花费的时间代价是不一样的,删 ...

  9. 06.队列、python标准库中的双端队列、迷宫问题

    class QueueUnderflow(ValueError): """队列为空""" pass class SQueue: def __ ...

随机推荐

  1. MySql -- not null 非空约束

    2.not null 非空约束 用于确保当前列的值不为空:在创建表时,如果不指定是否可以为空,字段默认可以为NULL. -- 这是上一篇默认约束创建的表 CREATE TABLE `test`.`us ...

  2. Bayer Pattern

    在刚加入工作的时候,听到最多的就是RGGB Bayer Pattern.在之前的接触中,一直默认一张图片的每个像素点有RGB三个分量,那“RGGB Bayer Pattern”究竟是什么意思.在网上查 ...

  3. Matlab filter常用函数

    Filtering and Analysis Functions Filtering Function Description fftfilt Filters a signal with a digi ...

  4. Java基础(十二)之包和权限访问

    软件包 软件包解决了两个类名字一样的问题.软件包就是一个"文件夹". 包名的命名规范:1.要求所有字母都小写:2.包名一般情况下,是你的域名倒过来写.比如baidu.com,pac ...

  5. python使用信号机制实例:

    python使用信号机制实例: 程序会一直等待,直到其他程序发送CTRL-C信号给本进程.需要其他程序配合测试. 或者打开新的终端使用kill -sig PID 向一个进程发送信号,来测试. from ...

  6. 题解 P3951 小凯的疑惑

    P3951 小凯的疑惑 数论极菜的小萌新我刚看这题时看不懂exgcd做法的题解,后来在网上找到了一篇博客,感觉代码和推导都更加清新易懂,于是在它的基础上写了题解qwq 分析 两数互质,且有无限个,想到 ...

  7. 973. 最接近原点的 K 个点

    1.暴力排序,新建节点类重载小于符号排序. class Solution { public: struct comb{ int index,distance; comb():index(0),dist ...

  8. liunx详解-2

    linux安装与配置 安装配置 虚拟机配置1G内存,1核CPU,50G硬盘,网络地址转换(NAT,主机作为路由构建内网) 镜像文件:http://mirror.nsc.liu.se/centos-st ...

  9. 一起学Netty(一)之HelloWorld,可以聊天的小程序哦

    转自于:http://blog.csdn.net/linuu/article/details/51306480

  10. 集群Session一致性和同步问题

    一. 何为session 用户使用网站的服务,基本上需要浏览器和web服务器进行多次交互,web服务器如何知道哪些请求是来自哪个会话的? 具体方式为:在会话开始时,分配一个唯一的会话标识(sessio ...