数据结构与算法-队列篇

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

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

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

目录
相关文章
|
1月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
215 9
|
2月前
|
缓存 算法 调度
数据结构之 - 双端队列数据结构详解: 从基础到实现
数据结构之 - 双端队列数据结构详解: 从基础到实现
101 5
|
28天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
54 5
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
初步认识栈和队列
初步认识栈和队列
65 10
|
2月前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
29 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
2月前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
37 2
【数据结构】--- 栈和队列
【数据结构】--- 栈和队列
|
2月前
|
消息中间件 存储 Java
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
50 4
|
2月前
【数据结构】-- 栈和队列
【数据结构】-- 栈和队列
21 0