菜鸟笔记
提升您的技术认知

python队列操作

"""
队列
    定义:队列是限制在两端进行插入和操作的线性表,允许存入操作的一段叫“队尾”,删除操作的一端叫“队头”
    特点:队列只能在队头和队尾进行数据操作
        队列模型具有先进先出的规律
思路分析:
    基于列表完成数据存储
    通过封装进行数据操作
    确定列表的那一段作为对头
"""


class QueueError(Exception):
    pass


class Queue:
    def __init__(self):
        self._queue = []

    # 入队,列表尾部定义为队尾
    def enqueue(self, val):
        self._queue.append(val)

    # 出队
    def dequeue(self):
        if not self._queue:
            raise QueueError("Queue is empty")
        return self._queue.pop(0)

    # 判断队列是否为空
    def is_empty(self):
        return self._queue == []


if __name__ == "__main__":
    q = Queue()
    q.enqueue(10)
    q.enqueue(20)
    q.enqueue(30)
    while not q.is_empty():
        print(q.dequeue())

    # 将队列中的数据倒叙加入队列中
    from lstack import *

    sq = Queue()
    ls = LStack()
    for item in range(10):
        sq.enqueue(item)

    # 队列中的数据不为空,把数据加入栈中
    while not sq.is_empty():
        ls.push(sq.dequeue())

    # 栈中的数据不为空,把栈中的数据加入队列
    while not ls.is_empty():
        sq.enqueue(ls.pop())
    while not sq.is_empty():
        print(sq.dequeue())