理解 python 中的栈和队列

新手上路,请多包涵

所以我得到了这个问题。考虑具有标准操作集的 Stack 和 Queue 类。使用 Stack 和 Queue 类,在调用 mysteryFunction 之前和调用 mysteryFunction 之后,它们中包含哪些项目?

这是代码:

 def mysteryFunction(s, q):
    q.enqueue('csc148')
    q.enqueue(True)
    q.enqueue(q.front())
    q.enqueue('abstract data type')

    for i in range(q.size()):
        s.push(q.dequeue())

    while not s.is_empty():
        q.enqueue(s.pop())

if __name__ == '__main__':
    s=Stack()
    q=Queue()

#About to call mysteryFunction
#What are contents of s and q at this point?
    mysteryFunction(s, q)
#mysteryFunction has been called.
#What are contents of s and q at this point?

由于我是这个主题的新手,所以我无法理解面向对象的编程。是否有任何链接可以分解堆栈和队列以及它们的作用?

原文由 ZeroKEz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 672
2 个回答

一般来说,栈是后进先出,队列是先进先出。

在 Python 中,您可以使用 collections 模块来试验堆栈和队列:

 >>> from collections import deque
>>> stack = deque()
>>> stack.append(10)
>>> stack.append(20)
>>> stack.append(30)
>>> stack
deque([10, 20, 30])
>>> stack.pop()           # LIFO
30
>>> stack.pop()
20
>>>
>>> queue = deque()
>>> queue.append(10)
>>> queue.append(20)
>>> queue.append(30)
>>> queue
deque([10, 20, 30])
>>> queue.popleft()       # FIFO
10
>>> queue.popleft()
20

原文由 Raymond Hettinger 发布,翻译遵循 CC BY-SA 3.0 许可协议

有关更多信息,请参见以下链接:

队列

在视觉上可以通过以下方式看到这两个数据结构:

堆:

堆栈视觉

描述:

这种数据结构有多种变体。然而,简单来说——正如人们可以在提供的图像中观察到的那样,当您添加到此数据结构时,您将放置在已经存在的内容之上,而当您删除时,您也会从顶部获取。你可以把它看成一堆书,你可以从头到尾一本一本地翻阅。

队列

队列视觉

描述:

这个特定的数据结构也有变化,但是简单地说 - 正如你在提供的图像中看到的那样,当你添加到这个数据结构时,新元素进入开头,当你从列表中删除它的最后一个元素时正在被删除。你可以把它想象成你在一家商店里排队,你站在很多人后面等着轮到你来柜台支付你的物品。

原文由 e.doroskevic 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏