数据结构与算法-队列篇

 Python数据结构-队列:

在Python中,队列(Queue)是一种常见的数据结构,它遵循先进先出(FIFO)的原则。队列保证顺序处理,有缓冲作用,在任务调度、资源分配等方面重要性突出,是诸多算法和场景的基础。下面是队列的基本用法:

队列的常用方法如下:

  1. 入队操作:将元素添加到队列的尾部。
  2. 出队操作:从队列的头部取出元素。
  3. 判断队满:获取队列的长度与其大小相比较
  4. 判断队空:比较队列长度与0是否相等

队列的常见应用场景包括:

  1. 排队系统:例如银行排队、医院挂号等。
  2. 任务调度:按顺序处理任务。
  3. 消息传递:按顺序处理消息。
    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.front
    
    q=Queue(5)
    for i in range(4):
        q.push(i)
    print(q.is_filled()) # True
    print(q.pop())  # 先进先出
    

    在这个示例中,我们定义了一个队列类,包含入队、出队、判断队列是否为满和是否为空等方法。通过入队操作将元素添加到队列中,出队操作从队列头部取出元素。

不过,在平常刷题的时候偶尔会用到清空队列的操作,下面总结一下队列的清空方法:

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

    def enqueue(self, item):
        self.queue.append(item)

    def dequeue(self):
        if not self.is_empty():
            return self.queue.pop(0)
        else:
            return None

    def is_empty(self):
        return len(self.queue) == 0

    def clear(self):
        self.queue = []

# 创建队列对象
queue = Queue()

# 入队操作
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)

# 清空队列
queue.clear()

# 检查队列是否为空
if queue.is_empty():
    print("队列已清空")

这里,我们写了一个基本的队列框架并定义了一个简洁的队列对象,对其进行了入队和清空操作,并且判断了其最后是否为空。

  • 40
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值