【数据结构与算法】5_python版 _队列

发布时间:2026/7/30 2:42:58

【数据结构与算法】5_python版 _队列 文章目录一、什么是队列二、 队列2.1 队列实现2.2 队列的操作2.3 队列代码的(顺序表)实现三、双端队列3.1 双端队列的操作3.2 双端队列代码的(顺序表)实现一、什么是队列队列queue是只允许在一端进行插入操作而在另一端进行删除操作的线性表。队列是一种先进先出的First In First Out的线性表简称FIFO。允许插入的一端为队尾允许删除的一端为队头。队列不允许在中间部位进行操作假设队列是qa1a2……an那么a1就是队头元素而an是队尾元素。这样我们就可以删除时总是从a1开始而插入时总是在队列最后。这也比较符合我们通常生活中的习惯排在第一个的优先出列最后来的当然排在队伍最后。二、 队列2.1 队列实现同栈一样队列也可以用顺序表或者链表实现。2.2 队列的操作Queue() 创建一个空的队列enqueue(item) 往队列中添加一个item元素dequeue() 从队列头部删除一个元素is_empty() 判断一个队列是否为空size() 返回队列的大小2.3 队列代码的(顺序表)实现# 队列classQueue:def__init__(self):self.__list[]defenqueue(self,item):# 往队列里添加一个item元素self.__list.append(item)# 1.尾部添加# self.__list.insert(0, item)# 2.头部添加defdequeue(self):# 从队列头部删除一个元素returnself.__list.pop(0)# 1.头部弹出# return self.__list.pop()# 2.尾部弹出defis_empty(self):# 判断一个队列是否为空returnself.__list[]defsize(self):# 返回队列大小returnlen(self.__list)if__name____main__:qQueue()q.enqueue(1)q.enqueue(2)q.enqueue(3)q.enqueue(4)print(q.dequeue())# 1print(q.dequeue())# 2print(q.dequeue())# 3print(q.dequeue())# 4三、双端队列双端队列deque全名double-ended queue是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。3.1 双端队列的操作Deque() 创建一个空的双端队列add_front(item) 从队头加入一个item元素add_rear(item) 从队尾加入一个item元素remove_front() 从队头删除一个item元素remove_rear() 从队尾删除一个item元素is_empty() 判断双端队列是否为空size() 返回队列的大小3.2 双端队列代码的(顺序表)实现# 双端队列classDeque:def__init__(self):self.__list[]defadd_front(self,item):# 头部添加self.__list.insert(0,item)defadd_rear(self,item):# 尾部添加self.__list.append(item)defpop_front(self):# 队列头部删除一个元素弹出returnself.__list.pop(0)defpop_rear(self):# 尾部删除弹出returnself.__list.pop()defis_empty(self):# 判空returnself.__list[]defsize(self):# 返回队列长度returnlen(self.__list)if__name____main__:dDeque()d.add_front(1)d.add_front(2)d.add_rear(3)d.add_rear(4)print(d.pop_front())# 2print(d.pop_front())# 1print(d.pop_rear())# 4print(d.pop_rear())# 3

相关新闻