数据结构与算法-队列篇

简介: 数据结构与算法-队列篇

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())  # 先进先出
  1. 在这个示例中,我们定义了一个队列类,包含入队、出队、判断队列是否为满和是否为空等方法。通过入队操作将元素添加到队列中,出队操作从队列头部取出元素。

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

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("队列已清空")

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

相关文章
|
8天前
数据结构——栈和队列
数据结构——栈和队列
10 1
|
2天前
|
Python
数据结构===队列
数据结构===队列
|
4天前
|
算法
$停车场管理系统 栈与队列
$停车场管理系统 栈与队列
5 1
|
8天前
|
存储 算法 程序员
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
16 4
|
8天前
数据结构 栈 / 队列(第9天)
数据结构 栈 / 队列(第9天)
|
16天前
|
算法 C语言
数据结构和算法学习记录——栈和队列习题-用队列实现栈、用栈实现队列(核心思路、解题过程、完整题解)二
数据结构和算法学习记录——栈和队列习题-用队列实现栈、用栈实现队列(核心思路、解题过程、完整题解)二
16 2
|
1天前
|
缓存 调度
栈和队列的区别
栈和队列的区别
5 0
|
5天前
|
存储 缓存 算法
|
9天前
|
C语言 C++
【数据结构】C语言实现:栈(Stack)与队列(Queue)
【数据结构】C语言实现:栈(Stack)与队列(Queue)
|
11天前
数据结构初阶 队列
数据结构初阶 队列
8 0

热门文章

最新文章