https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

目录

  • 一、队列
    • 1.1举例
    • 1.2代码
    • 1.3运行结果
  • 二、双端队列
    • 2.1举例
    • 2.2代码
    • 2.3运行结果

一、队列

  1. 一种特殊的线性表,特殊之处在于它能在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。简而言之,就像排队一样,先进先出:FIFO(First In First Out)
  2. 进行添加操作的端称为队尾,进行删除操作的端称为队头。

1.1举例

第一个就队头,第二个就是队尾,队头进行删除操作,队尾进行添加操作。比如说我们早上去买包子,人多了就得排队,买包子的人是从队尾开始排(添加),你排第一个的时候就可以付钱拿着包子走人了(删除)。

1.2代码

#coding=utf-8class Queue(object):'''enter_queue():往队列末尾添加一个元素delete_queue():从队列头部删除一个元素is_empty():判空操作size():返回队列的大小'''def __init__(self):# 空的列表,保存队列数据self.list = []def enter_queue(self,item):# 往队列末尾添加一个元素self.list.append(item)def delete_queue(self):# 从队列头部删除一个元素return self.list.pop(0)# return self.list,这是返回列表def is_empty(self):# 判空操作return self.list == []def size(self):# 返回队列的大小return len(self.list)# 数据测试
if __name__ == "__main__":a = Queue()a.enter_queue("第一个排队== 第一个买到包子的人")a.enter_queue("第二个排队== 第二个买到包子的人")a.enter_queue("第三个排队== 第三个买到包子的人")print(a.delete_queue())print(a.delete_queue())print(a.delete_queue())

1.3运行结果

二、双端队列

其两端都可以入列和出列的数据结构,如下图所示,队尾(rear)和队头(front)都可以加入和移出数据
注意:其具有队列的性质

2.1举例

(想来想去都不知道用什么例子好,这是我目前能够想到的最好的一个例子了呜呜呜)
想象一下这是一个酒店吧,它有两个门,一个前门,一个后门,前门可以进,也可以出,后门可以进,也可以出

2.2代码

#coding=utf-8"""
add_front():从队列头部加入一个元素
add_rear():从队列尾部加入一个元素
remove_front():从队列头部删除一个元素
remove_rear():从队列尾部删除一个元素
is_empty(): 判空操作
size():返回队列的大小
"""class Double_ended_queue():def __init__(self):# 空的列表,保存队列数据self.list = []def add_front(self, item):# 从队列头部加入一个元素self.list.insert(0,item)def remove_front(self):# 从队列头部删除一个元素return self.list.pop(0)def add_rear(self, item):# 从队列尾部添加一个元素self.list.append(item)def remove_rear(self):# 从队列尾部删除一个元素return self.list.pop()def is_empty(self):# 判空操作return self.list == []def size(self):# 返回队列的大小return len(self.list)# 数据测试if __name__ == "__main__":a =Double_ended_queue()a.add_front("前门进的第一个人")a.add_front("前门进的第二个人")a.add_front("前门进的第三个人")a.add_rear("后门进的第一个人")a.add_rear("后门进的第二个人")a.add_rear("后门进的第三个人")# 从队尾出队print(a.remove_rear())print(a.remove_rear())print(a.remove_rear())print(a.remove_rear())print(a.remove_rear())print(a.remove_rear())

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

2.3运行结果

数据结构--队列、双端队列实际举例详解(Python代码)相关推荐

  1. java数据结构之双端队列ArrayDeque

    这篇文章介绍java的数据结构之双端队列之ArrayDeque 1.ArrayDeque ArrayDeque是一个双端数组,既可以当做栈使用,也可以当做队列使用. ArrayDeque有两个指针he ...

  2. 数学建模——智能优化之遗传算法详解Python代码

    数学建模--智能优化之遗传算法详解Python代码 import numpy as np import matplotlib.pyplot as plt from matplotlib import ...

  3. 数学建模——主成分分析算法详解Python代码

    数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...

  4. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  5. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  6. 数学建模——支持向量机模型详解Python代码

    数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...

  7. 数学建模——一维、二维插值模型详解Python代码

    数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...

  8. 数学建模——线性规划模型详解Python代码

    数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...

  9. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  10. 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现

    目录 前言 二次指数平滑法(Holt's linear trend method) 1.定义 2.公式 二次指数平滑值: 二次指数平滑数学模型: 3.案例实现 三次指数平滑法(Holt-Winters ...

最新文章

  1. Android 属性动画(Property Animation) ObjectAnimator的介绍
  2. django框架使用mysql报错,及两种解决方法
  3. 使用osql.exe, 将Select的内容保存为文件
  4. 老黄历接口(免注册)
  5. C语言 内存分配 地址 指针 数组 参数 解析
  6. linux部署redis集群遇到的问题
  7. [你必须知道的.NET] 调试技巧 - DebuggerDisplayAttribute
  8. win10如何解决浏览器出现“正在解析主机”的问题,很大原因是虚拟机,虚拟网卡,小米随身wifi导致的,DNS优选下载,
  9. SQL 获取本周日期
  10. 设计分享 | 基于51单片机理解SG90舵机原理并用按键控制
  11. marlin固件烧录教程_marlin固件中文(marlin固件下载)【配置教程】
  12. 放大器的频率特性(2)-- 共源极的频率特性
  13. 思科二层交换机系列------设备更换详细配置命令
  14. [转载]大数据入门 - 董飞
  15. 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程
  16. BPF CO-RE reference guide
  17. 歪写数学史(三个“L”)
  18. 压缩解压工具gzip、pigz、gtz大比较
  19. C++算法——查找假币问题:
  20. 139邮件服务器怎么设置,移动139邮箱pop,imap,exchange设置参数

热门文章

  1. Java多线程--死锁例子
  2. opencore0.6.3_Ubuntu 18.04 源码编译安装 PHP 7.3
  3. java 异步调用webapi_Async Await异步调用WebApi
  4. java读取excel数据的方法是_java怎么读取excel文件里的数据
  5. android文件系统只读,android
  6. 创建数组表格PHP苹果价格,如何从PHP数组创建HTML表?
  7. RFID 射频 RFID工作流程 自动识别技术 工作频段 短距离无线通信技术
  8. linux+虚拟机上的wdcp,linux虚拟主机服务器wdcp系统教程
  9. java service 事物_Service 事务(JdbcUtils 升级)
  10. java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析