队列-Python 实现
用 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 实现的更多相关文章
- 第二百九十二节,RabbitMQ多设备消息队列-Python开发
RabbitMQ多设备消息队列-Python开发 首先安装Python开发连接RabbitMQ的API,pika模块 pika模块为第三方模块 对于RabbitMQ来说,生产和消费不再针对内存里的一 ...
- Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures
参考博客: https://www.cnblogs.com/xiao987334176/p/9046028.html 线程简述 什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线 ...
- python 全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)
昨日内容回顾 线程什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的 一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的在当 ...
- 赛码网算法: 军训队列( python实现 )
军训队列 题目描述某大学开学进行军训队列训练,将学生从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列剩下的依次向前靠拢,再从头开始进行一至三报数,凡报到三的出 ...
- 用两个栈实现队列(python)
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. # -*- coding:utf-8 -*- class Solution: def __init__( ...
- 两个栈实现队列 Python实现
# coding=utf-8 MAX_LENGTH = 100 SUCCESS = 1 FAIL = 0 ERROR = -1 class Queue(object): stack_fir = Non ...
- 链表实现队列(python)
# -*- coding: utf-8 -*- from collections import deque class Node(object): def __init__(self, value=N ...
- 剑指offer-用两个栈实现队列-栈和队列-python
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. # -*- coding:utf-8 -*- class Solution: def __init_ ...
- 优先级队列(python)
# -*- coding:utf-8 -*- class Array(object): def __init__(self, size=32): self._size = size self._ite ...
- 剑指offer-栈的压入、弹出序列-栈和队列-python
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
随机推荐
- 在使用HOperatorSet.Draw忘记点击右键结束方法无法关闭窗体问题如何规避
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/17270056.html 可以在离开窗体或者关闭窗体事件中调用HOperatorSet.HIOC ...
- Deepin搭建git仓库服务gogs,debian也可用
我尝试了gitlab.gitblit搭建均失败,deepin版本20.03 1. 步骤 访问gogs官网下载&安装页面 数据库(选择以下一项): MySQL:版本 >= 5.7. Pos ...
- C#中固定编译时不确定数量的变量(相关话题fixed固定多个数组)
以交错数组byte[][]为例. fixed无法固定byte[][],只能在编译时固定确定数量的变量. 交错数组byte[][]中的每一个byte[]可以采用GCHandle进行固定. int n = ...
- WPF无边框的一个方案(保留默认窗口的拖动、阴影等效果)
使用 WindowStyle="None" AllowsTransparency="True" 的方式达成无边框的效果有很多无法忽视的缺陷,比如失去了拖动效果. ...
- SM系列国密算法
其中SM1.SM4.SM7.祖冲之密码(ZUC)是对称算法:SM2.SM9是非对称算法:SM3是哈希算法.目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现. 一.SM1 ...
- ABC391E题解
大概评级:绿. 题目传送门. 显然动态规划,设 \(f_{i,k}\) 表示经过 \(i\) 次变换后能将 \(a_k\) 取反的最大值,显然答案为 \(f_{n,1}\),状态转移很简单,枚举 \( ...
- redux vs redux-toolkit 及源码实现
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霜序 前言 为何讲这个内容?以为后续大家会使用 redux ...
- C#枚举帮助EnumHelper
1 public class EnumHelper 2 { 3 #region 获取枚举 4 public static List<EnumValue> GetEnumList(Type ...
- pytorch报错 No module named 'nn'
问题描述 pytorch 报错 No module named 'nn' 如果你 import torch 没问题,而 import torch.nn时出现问题,你可能命名使用了一个名字为 torch ...
- ffmpeg合并时音画不同步问题及音频软编码实现记录
最近因为耳机3.5mm接口的一些干扰问题,舍弃了之前的接入方式,需要重新实现网络音频流的接入,在这个过程中遇到了一些问题,特来记录一下~ 一.网络音频流的接入 这个音频流来源各不相同,我这里是udp广 ...