python数据结构栈03队列

本文介绍了队列的基本概念及其特点,并提供了一个简单的队列实现案例。此外,还探讨了双端队列的概念及应用场景,通过实例帮助读者理解队列与双端队列的区别与联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python数据结构栈03队列


一、队列

队列是什么呢?

  1. 队列就是一种有次序的数据集合,是有次序,并非是排序。
  2. 特点和栈有些不同,队列的数据添加总发生在一端,移除数据则在另外一端。意味着队列只有一个进口和一个出口。
  3. 队列遵循先进先出的原则,与栈的先进后出相反

举个例子:

  1. 我们都知道一个火爆的店铺往往外边都是大排长龙,所谓的排队就是队列啦,当然作为新时代的好青年,当然是杜绝插队这种行为啦。
    在这里插入图片描述

  2. 或者当你打字的时候,不知道你们有没有感觉,就是当你的电脑有点卡,不能够及时反馈的时候,你打的字还没显示的时候它是怎么处理的呢,就是存在队列啦,还有就是打印机,不是也有打印队列滴吗
    在这里插入图片描述

二、实现队列

class Queue:
    def __init__(self):
        self.items = []
        
    def isEmpty(self):
        return self.items == []
    
    def push(self,item):
        self.items.insert(0,item)  
        
    def pop(self):
        self.items.pop()
        
    def size(self):
        return len(self.items)

左端添加,右端删除
insert(0,item) 复杂度是O(n),但是删除是O(1)
如果你想从右端添加,左端删除,那就是反过来的,
append(item)复杂度O(1)----------pop(0)复杂度O(N)
在这里插入图片描述


三、升一下级“双端队列”

1.简单解释双端队列

什么是双端队列,既然是双端,那就意味着他的每一端都具有着队列的性质,既可以从一端出,也可以一端进。
某种意义上说,这就是栈和队列的集合体。

2.有啥用

其实没啥用。啊哈哈。
双端队列可以用了,那不是双指针就上了,emmm,到也不能这么说,还得看具体情况把。


拿一道leetcode题看看把:
在这里插入图片描述
代码:

class Solution:
    def isPalindrome(self, x: int) -> bool:
        def dequeue(x):
            deque = list()
            for i in str(x):
                deque.append(i)
            if len(deque) == 1:
                return True
            equal = True
            while len(deque)>1 and equal:
                first = deque.pop(0)
                last = deque.pop()
                if first != last:
                    equal = False
            return equal
        return dequeue(x)

还有一个偷懒好方法

class Solution:
    def isPalindrome(self, x: int) -> bool:
        x = str(x)
        if x==x[::-1]:
            return True
        else:
            return False

真就干啥啥不行,干饭第一名,睡觉咯
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值