数据结构与算法:队列(Queue)的实现
2023-09-11 14:21:08 时间
在数据结构当中,有一种结构叫做队列。队列和栈都是一个类似于列表的东西,唯一不同的地方则是“先进先出”。队列就像我们在食堂排队吃饭一样,先排队的同学最先打到饭,下面是我画的队列的图片:
从这种图当中我们可以看到队列就如同一个吸管一样,最先从吸管左边进入的数字1,同时也最先吸管的最右边出来。是否十分容易理解呢?现在我们使用Python来实现这个数据结构:
class Queue(): def __init__(self): # 初始化一个空的列表 self.__list=[] # 往队列里插入元素 def enqueue(self,item): self.__list.append(item) def dequeue(self): return self.__list.pop(0)# 弹出队列里最先进入的元素 # 判断队列是否为空 def is_empty(self): return self.__list == [] # 计算队列的大小 def size(self): return len(self.__list) queue = Queue() # 创建队对象完成,向队列里面灌入元素 queue.enqueue(1) queue.enqueue(2) queue.enqueue(3) queue.enqueue(4) print("If this queue is empty? :",queue.is_empty()) # 将队列里的元素一个一个依次取出 print(queue.dequeue()) print(queue.dequeue()) print(queue.dequeue()) print(queue.dequeue())
最后得到的输出是:
If this queue is empty? : False 1 2 3 4
可以看到,我们插入队列元素的顺序是1,2,3,4.最后出队列的时候,元素的输出顺序也是1,2,3,4.这就队列的特点了。队列将会在后面的深度优先搜索算法当中起到很大的作用。
相关文章
- 结构与算法(02):队列和栈结构
- 【算法】【栈和队列模块】使用栈数据结构实现一个队列的基本功能
- 【算法】【栈和队列模块】求一个[0,1]矩阵中最大的1矩阵面积
- 【算法】【栈和队列模块】将数组转为最大值树MaxTree
- C#,普洛尼克数(Pronic Number)的算法与源代码
- 算法笔记 第三章
- [算法]LeetCode 120:三角形最小路径和
- 算法与数据结构题目的 PHP 实现:栈和队列 由两个栈组成的队列
- heapq-堆队列算法
- 【C语言】冒泡排序算法和冒泡排序的时间复杂度
- 看动画学算法之:双向队列dequeue
- 【06】概率图推断之变量消除算法
- 算法基础复盘笔记Day03【数据结构】—— 单链表、双链表、栈、队列、单调栈、单调队列
- 堆/栈/队列的相关算法
- 算法导论——lec 12 平摊分析与优先队列
- 数据结构与算法:双端队列
- Java数据结构与算法 day12 图
- Java数据结构和算法day01 稀疏数组与队列
- 【图像处理】——Python图像分割边缘检测算法之一阶梯度算子(Roberts、Prewitt、Sobel、 Kirsch、Canny算子)
- 20数据结构与算法分析之---串的模式匹配
- 14数据结构与算法分析之---队列的定义
- leetcode算法232.用栈实现队列
- leetcode算法225.用队列实现栈