博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构(python) —— 【21: 队列】
阅读量:3943 次
发布时间:2019-05-24

本文共 1308 字,大约阅读时间需要 4 分钟。

队列

队列(Queue)是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除

进行插入的一端称为队尾(rear),插入动作称为进队或入队
进行删除的一端称为队头(front),删除动作称为出队
队列的性质:先进先出(First-in, First-out)
为了让队列可以循环使用,这里我们提出了环形队列
环形队列:
当队首指针front == Maxsize - 1时, 再前进一个位置就自动到0.

  • 队首指针前进1: front = (front + 1) % MaxSize
  • 队尾指针前进1: rear = (rear + 1) % MaxSize
  • 队空条件: rear == front
  • 队满条件: (rear + 1) % MaxSize == front
'''TOPIC: 队列Queueauthor: Bluetime: 2020-08-11QQ: 2458682080'''class Queue:    def __init__(self, size=100):        self.queue = [0 for _ in range(size)]        self.size = size        self.rear = 0   # 队尾指针        self.front = 0  # 队首指针    def push(self, element):        if not self.is_filled():            self.rear = (self.rear + 1) % self.size            self.queue[self.rear] = element        else:            raise IndexError("Queue is filled.")    def pop(self):        if not self.is_empty():            self.front = (self.front + 1) % self.size            return self.queue[self.front]        else:            raise IndexError("Queue is empty.")    # 判断队空    def is_empty(self):        return self.rear == self.front    # 判断队满    def is_filled(self):        return (self.rear + 1) % self.size == self.frontq = Queue(5)for i in range(4):    q.push(i)print(q.is_filled())print(q.pop())q.push(4)

结果:

True0

有兴趣的读者也可以试试Python的内置队列模块deque

from collections import deque

转载地址:http://cbiwi.baihongyu.com/

你可能感兴趣的文章
Python - 利用zip函数将两个列表(list)组成字典(dict)
查看>>
python-全角转半角
查看>>
Python pass语句作用与用法
查看>>
Java double,float设置小数点位数
查看>>
PyCharm & Jupyter
查看>>
为什么要用Jupyter Notebook
查看>>
sklearn中的LogisticRegression模型
查看>>
pandas.get_dummies 的用法
查看>>
机器学习-训练模型的保存与恢复(sklearn)
查看>>
Spark(二): spark-submit命令详解
查看>>
细品 - 逻辑回归(LR)*
查看>>
hive: size与spilt连用
查看>>
Python:ModuleNotFoundError: No module named 模块名 错误及解决方案
查看>>
Python中os与sys两模块的区别
查看>>
nohup详解
查看>>
idea .gitignore对.idea不起作用解决
查看>>
深度学习中的注意力机制(2017版)-易理解
查看>>
Transformer解析-易理解
查看>>
多维数组[:,0]和[:0:1]获取的区别
查看>>
复原Ip地址
查看>>