剑指offer-python刷题-用两个栈实现队列
发布日期:2021-07-28 12:03:07 浏览次数:3 分类:技术文章

本文共 927 字,大约阅读时间需要 3 分钟。

题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。


:先入后出,push操作将元素添加到队列的末尾,pop操作删除最末端的元素。

队列:先入先出,push操作将元素添加到队列的末尾,pop操作删除最前端的元素。

python中没有栈这种数据结构,因此选择列表结构,列表中的append方法表示在列表末尾添加一个元素,pop方法表示删掉列表的最后一个元素并将其输出。正好对应了栈的先入后出的结构。

a = [1,2,3,4,5]a.append(6)print(a)#[1,2,3,4,5,6]a.pop()#6print(a)#[1,2,3,4,5]

使用列表的append和pop表示队列的push和pop操作

class Solution:    def __init__(self):        #初始化两个空列表,用于表示两个栈结构        self.stack1 = []        self.stack2 = []    def push(self, node):        # 队列的push操作将node添加到某个栈的末尾        self.stack1.append(node)    def pop(self):        # 队列的pop操作将栈的最前端元素返回出来        # 当栈二不为空时,直接弹出其最后一个元素(不太明白这部分存在的意义,但是没有的话显示错误)        if len(self.stack2) > 0:            return self.stack2.pop()        # 将栈1中的所有元素倒序装到栈2,这样栈2的pop就可以弹出栈1的第一个元素        while self.stack1:            self.stack2.append(self.stack1.pop())        if len(self.stack2) > 0:            return self.stack2.pop()

个人心得:

因为数据结构了解的不清晰,光看题目根本不知道要干什么...

转载地址:https://blog.csdn.net/sinat_42437278/article/details/117372495 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:剑指offer-python刷题-旋转数组的最小数字
下一篇:Unknown module(s) in QT: webenginewidgets原因及解决办法

发表评论

最新留言

不错!
[***.144.177.141]2024年04月21日 16时43分02秒