用 Python 来实现 队列和双端队列, 直接上代码理解即可. 队列蛮好理解的, 就是模拟咱生活中的排队. 先进, 先出嘛.

"""
队列 - ADT
队列 Queue 被构造为在队尾添加元素, 队首删除元素的有序集合, FIFO Queue(): 创建一个空队列
enqueue(itme): 入队, 将元素添加到队尾
dequeue(): 出队, 删除队首元素并返回
is_empty(): 判断队列是否为空
sise(): 返回队列中的元素个数 思路:
用 list 作为底层, 约定, 最左端为队尾, 最右端为队首 """ class Queue:
def __init__(self):
self.items = [] def enqueue(self, item):
"""添加元素到队尾"""
self.items.insert(0, item) def dequeue(self):
"""删除队首元素并返回"""
return self.items.pop() def is_empty(self):
return self.items == [] def size(self):
return len(self.items) if __name__ == '__main__':
q = Queue() for i in range(1,6):
q.enqueue(i)
print(q.size()) print(q.dequeue())
print(q.dequeue()) print(q.is_empty())

Dquue - 双端队列

"""
Deque 双端队列被构造为项的集合, 可以从队首或队尾任意一段增删元素. Deque(): 创建一个新的Deque add_front(item): 从队首添加元素
add_rear(item): 从队尾添加元素 remove_front(item): 从队首删除元素, 并返回
remove_rear(item): 从队尾删除元素, 并返回 is_empty(): 判断队列是否空
size(): 返回队列中的项数 思路:
用 list 作为底层架构, 并约定, 最左边为对尾, 最右侧为对首 """ class Deque:
def __init__(self):
self.items = [] def add_front(self, item):
"""队首添加元素"""
self.items.append(item) def remove_front(self):
"""队首删除元素"""
return self.items.pop() def add_rear(self, item):
"""队尾添加元素"""
self.items.insert(0, item) def remove_rear(self):
"""删除队尾元素"""
return self.items.pop(0) def is_empty(self):
return self.items == [] def size(self):
return len(self.items) if __name__ == '__main__':
dq = Deque() for i in range(3):
dq.add_front(i)
print(dq.size()) dq.add_rear(-1)
print(dq.remove_front()) print(dq.size())

队列-Python 实现的更多相关文章

  1. 第二百九十二节,RabbitMQ多设备消息队列-Python开发

    RabbitMQ多设备消息队列-Python开发 首先安装Python开发连接RabbitMQ的API,pika模块 pika模块为第三方模块  对于RabbitMQ来说,生产和消费不再针对内存里的一 ...

  2. Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures

    参考博客: https://www.cnblogs.com/xiao987334176/p/9046028.html 线程简述 什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线 ...

  3. python 全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)

    昨日内容回顾 线程什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的 一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的在当 ...

  4. 赛码网算法: 军训队列( python实现 )

    军训队列 题目描述某大学开学进行军训队列训练,将学生从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列剩下的依次向前靠拢,再从头开始进行一至三报数,凡报到三的出 ...

  5. 用两个栈实现队列(python)

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. # -*- coding:utf-8 -*- class Solution: def __init__( ...

  6. 两个栈实现队列 Python实现

    # coding=utf-8 MAX_LENGTH = 100 SUCCESS = 1 FAIL = 0 ERROR = -1 class Queue(object): stack_fir = Non ...

  7. 链表实现队列(python)

    # -*- coding: utf-8 -*- from collections import deque class Node(object): def __init__(self, value=N ...

  8. 剑指offer-用两个栈实现队列-栈和队列-python

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.   # -*- coding:utf-8 -*- class Solution: def __init_ ...

  9. 优先级队列(python)

    # -*- coding:utf-8 -*- class Array(object): def __init__(self, size=32): self._size = size self._ite ...

  10. 剑指offer-栈的压入、弹出序列-栈和队列-python

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

随机推荐

  1. 使用nvm管理node.js版本,方便vue2,vue3开发

    在Vue项目开发过程中,我们常常会遇到同时维护Vue2和Vue3项目的情况.由于不同版本的Vue对Node.js 版本的要求有所差异,这就使得Node.js 版本管理成为了一个关键问题.NVM(Nod ...

  2. Linux环境Docker使用代理推拉镜像

    闲扯几句 不知不觉已经2月中了,1个半月忙得没写博客,这篇其实很早就想写了(可追溯到Docker刚刚无法拉镜像的时候),由于工作和生活上的事比较多又在备考软考架构,拖了好久-- 简单记录下怎么做的,以 ...

  3. 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)

    现在使用Uni-app开发手机端APP已经变得很普遍,同一套代码就可以打包成Android App 和 iOS App,相比原生开发,可以节省客观的人力成本.那么如何使用Uni-app来开发视频聊天软 ...

  4. css的度量单位:px、em、rem、vh、vw、vmin、vmax、百分比

    css的度量单位 px,像素数量,适用于比较固定的场景,比如边框宽度,分割线宽度 em em:是描述相对于应用在当前元素的字体尺寸,所以它也是相对长度单位.一般浏览器字体大小默认为16px,则2em ...

  5. QT5笔记: 30. 二进制文件读写

    Qt 预定义类型文件 *.stm 标准二进制文件 *.dat 例子: MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include & ...

  6. 雷电4扩展坞HDMI显示器无法睡眠问题

    背景: 最近使用Dell的雷电4扩展坞WD22TB4,感觉很爽,取电脑时,不用再拔显示器.鼠标.键盘,直接把雷电4接口拔出即可. 后来通过windows update升级了intel显卡驱动后,发现电 ...

  7. 浅谈Processing中的 println() 打印输出函数[String]

    简单看一下Processing中的打印输出函数println()相关用法. 部分源码学习 /** * ( begin auto-generated from println.xml ) * * Wri ...

  8. day1-简介与下载

    为什么创造了golang? 计算机硬件技术更新频繁,不能合理运用多核多CPU的的优势 目前市场缺乏一款简洁高效的编程语言 c++.c运行速度很快,但存在内存泄漏的问题 go语言特点 既做到了静态语言的 ...

  9. PPT 技巧&网站

    样机生成网站 https://mockuphone.com/device?type=computer CTROL+L 演示生成荧光笔 3.如何内嵌字体 文件->选项->保存->勾选潜 ...

  10. Wireshark 的过滤器类型

    Wireshark 是一个强大的网络协议分析工具,支持多种类型的过滤器来帮助用户捕获和分析网络流量. 根据使用场景和功能,Wireshark 的过滤器可以分为以下两类: 1. 捕获过滤器(Captur ...