队列的python实现
队列(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实现的更多相关文章
- 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. 原因 ...
- python基础一 ------顺序结构队列的python实现
队列:先进先出的线性表(FIFO),只允许在一段插入并在另一端取出 以下是python实现 #-*-coding:utf-8-*- #顺序存储队列的python实现 class Queue(objec ...
- 数据结构之队列(Python 版)
数据结构之队列(Python 版) 队列的特点:先进先出(FIFO) 使用链表技术实现 使用单链表技术,在表首尾两端分别加入指针,就很容易实现队列类. 使用顺序表list实现 # 队列类的实现 cla ...
- RbbitMQ消息队列及python实现
1.简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的 ...
- 【391】栈与队列,Python实现
参考:python实现stack(栈)和队列(queue) - hjhmpl123的博客 - CSDN博客 参考:Python3 数据结构 | 菜鸟教程 栈和队列是两种基本的数据结构,同为容器类型.两 ...
- 栈和队列在python中的实现
栈和队列是两种基本的数据结构,同为容器类型.两者根本的区别在于: stack:后进先出 queue:先进先出 PS:stack和queue是不能通过查询具体某一个位置的元素而进行操作的.但是他们的排列 ...
- Python与数据结构[2] -> 队列/Queue[0] -> 数组队列的 Python 实现
队列 / Queue 数组队列 数组队列是队列基于数组的一种实现,其实现类似于数组栈,是一种FIFO的线性数据结构. Queue: <--| 1 | 2 | 3 | 4 | 5 |<-- ...
- 数据结构-循环队列(Python实现)
今天我们来到了循环队列这一节,之前的文章中,我介绍过了用python自带的列表来实现队列,这是最简单的实现方法. 但是,我们都知道,在列表中删除第一个元素和删除最后一个元素花费的时间代价是不一样的,删 ...
- 06.队列、python标准库中的双端队列、迷宫问题
class QueueUnderflow(ValueError): """队列为空""" pass class SQueue: def __ ...
随机推荐
- 关于layui的日期和时间组件laydate闪屏的坑
https://blog.csdn.net/liangwenli_/article/details/82786713 jsp页面: <input type="text" cl ...
- 算法_hdoj_1003
question: Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 【 js 上传文件】
上传文件 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- java测试框架详细说明-mvn+testng+allure
java测试框架 mvn+testng+allure 1.mvn代码目录结构 2.testng框架 2.1 testng.xml配置 2.2 注解 3.allure插件,方便报告阅览 4.配置文件.p ...
- AJAX--XMLHttpRequest对象
创建XMLHttpRequest对象 XMLHttpRequest是AJAX的基础. 所有现代浏览器(IE7+.Firefox.Chrome.Safari以及Opera)均内建XMLHttpReque ...
- [RedHat]“is not in the sudoers file”解决方法
当在终端执行sudo命令时,系统提示“luckchengis not in the sudoers file”: $ sudo ls Password: luckcheng is not in the ...
- 【vue】axios + cookie + 跳转登录方法
axios 部分: import axios from 'axios' import cookie from './cookie.js' // import constVal from './cons ...
- JavaScript对象之对象标签和对象序列化
对象标签有三种:proto.class和extensible. 一.proto标签 例如我新建了一个person对象,那么其__proto__则指向Person.prototype,然后Person. ...
- ubuntu16.04修改复制粘贴快捷键的方法
打开终端-选择配置文件首选项 打开,选择快捷键,自行修改
- Bugku-CTF之求getshell
Day31 求getshell http://123.206.87.240:8002/web9/