【数据结构实践】简单实现Python自定义队列

简介: 队列:跟数组一样,队列中的数据也是呈线性排列的,它是一种先进先出(FIFO: First in First Out)的线性结构,队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表.即在队列的尾部入队,在队列的头部出队。在队列中添加和删除数据的操作分别是在两端进行的。顾名思义,他就和我们现实生活中的‘队列’是一样的,你可以把它想象操场上排成一列的队伍,在队列中,操作总是从第一名开始往后进行,而新来的人只能排在队尾。先来的数据先处理是一种很常见的思路,所以队列的应用范围非常广泛。就比如:疫情区间,你去做核酸,你先去的话你排在前面,你后面去的只能排在别人后面,做完核酸的人往前面走,相当

前言


何为队列?


队列:跟数组一样,队列中的数据也是呈线性排列的,它是一种先进先出(FIFO: First in First Out)的线性结构,队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表.即在队列的尾部入队,在队列的头部出队。

在队列中添加和删除数据的操作分别是在两端进行的。顾名思义,他就和我们现实生活中的‘队列’是一样的,你可以把它想象操场上排成一列的队伍,在队列中,操作总是从第一名开始往后进行,而新来的人只能排在队尾。先来的数据先处理是一种很常见的思路,所以队列的应用范围非常广泛。就比如:疫情区间,你去做核酸,你先去的话你排在前面,你后面去的只能排在别人后面,做完核酸的人往前面走,相当于出队,要做核酸的人,跟着排在队尾,这就相当于入队了。这也是队列的基本操作


队列的基本操作


入队:即队列添加成员,在队列的尾部完成

出队:即队列删除成员,在队列的头部完成

在创建队列时,一般以数组为数据结构


队列图解


1.队列的入队操作


往队列中添加元素时,数据总是被加到最上面(队尾),图中演示将[杜甫]这个数据加入队列

网络异常,图片无法展示
|


2.队列的出队操作


从队列中取出数据,总是从最下面开始,而且队列数据的取出就相当于把出队的数据删除,还是以做核酸为例,你做完核酸之后,就不需要再排队了,这时候就可离开队伍,下图演示将[张三]这个数据进行出队操作


网络异常,图片无法展示
|


自定义队列的实现


队列的设计


队列可以实现设置队列大小,入队,出队,显示队列元素,判断队列等功能.

实现流程如下:

  1. 创建自定义队列类NQueue
  2. 添加队列属性
  3. 创建入队,出队,显示队列元素,判断队列等方法
  4. 验证队列类NQueue

网络异常,图片无法展示
|


具体实现


1.创建NQueue类,并添加属性

classNQueue:
def__init__(self,size=10):
self._content=[]
self._size=sizeself._current=0


2.设置队列的大小

defsetSize(self,size):
ifsize<self._current:     #如果缩小队列,应删除后面的元素foriinrange(size,self._current)[::-1]:
delself._content[i]
self._current=sizeself._size=size


3.对列的出队,入队

defput(self,v):         #入队ifself._current<self._size:
self._content.append(v)
self._current=self._current+1else:
print('The queue is full')
defget(self):           #出队ifself._content:
self._current=self._current-1returnself._content.pop(0)
else:
print('队列为空')


4.显示队列中所有元素

defshow(self):          #显示所有元素ifself._content:
print(self._content)
else:
print('队列为空')


5.判断队列是否为空,以及判断队列是否已满

defempty(self):
self._content=[]
defisEmpty(self):        #判断是否已满ifnotself._content:
returnTrueelse:
returnFalsedefisFull(self):         #判断是否为空ifself._current==self._size:
returnTrueelse:
returnFalse


6.验证NQueue类


类的实例化

q=NQueue()


验证队列类的功能

print('将队列元素出队:')
q.get()
q.put(12)
q.put(23)
print('将元素入队:')
q.show()
print('判断队列是否已满:',str(q.isFull()))
q.setSize(3)
print('判断队列重设后是否已满:',str(q.isFull()))
print('向队列添加新元素:')
q.put(53)
q.put(33)
q.show()


本文就唠到这里,动手实现起来吧.要做时不我待的行动者,只争朝夕的实干家.惟有苦干实干,远大的目标才能早日达成

目录
相关文章
【数据结构】栈和队列
【数据结构】栈和队列
|
4天前
|
前端开发 Python
使用Python+openpyxl实现导出自定义样式的Excel文件
本文介绍了如何使用Python的openpyxl库导出具有自定义样式的Excel文件,包括设置字体、对齐方式、行列宽高、边框和填充等样式,并提供了完整的示例代码和运行效果截图。
8 1
使用Python+openpyxl实现导出自定义样式的Excel文件
|
1天前
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
20 6
|
7天前
|
开发者 Python
Python中的异常处理机制及其实践
【8月更文挑战第12天】Python的异常处理机制通过`try`和`except`结构显著提高了程序的稳定性和可靠性。在`try`块中执行可能引发异常的代码,如果发生异常,控制权将转移到与该异常类型匹配的`except`块。此外,还可以通过`else`处理无异常的情况,以及使用`finally`确保某些代码无论如何都会被执行,非常适合进行清理工作。这种机制允许开发者精确地捕捉和管理异常,从而提升程序的健壮性和可维护性。同时,Python还支持定义自定义异常,进一步增强了错误处理的灵活性。
23 4
|
3天前
|
算法
【数据结构与算法】优先级队列
【数据结构与算法】优先级队列
6 0
|
3天前
|
存储 算法
【数据结构与算法】队列(顺序存储)
【数据结构与算法】队列(顺序存储)
5 0
|
5天前
|
设计模式 算法 C语言
【CPP】栈、双端队列、队列、优先级队列与反向迭代器
【CPP】栈、双端队列、队列、优先级队列与反向迭代器
|
5天前
【数据结构】用栈实现队列
【数据结构】用栈实现队列
|
5天前
【数据结构】用队列实现栈
【数据结构】用队列实现栈
|
5天前
|
存储
【数据结构】队列
【数据结构】队列