理解python中的堆栈和队列

Zer*_*KEz 12 python python-3.x

所以我得到了这个问题.考虑具有标准操作集的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?
Run Code Online (Sandbox Code Playgroud)

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

Ray*_*ger 19

通常,堆栈是LIFO,队列是FIFO.

在Python中,您可以使用集合模块来体验堆栈和队列:

>>> 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
Run Code Online (Sandbox Code Playgroud)


e.d*_*vic 5

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

堆栈
队列

可以通过以下方式直观地看到这两个数据结构:

堆:

堆叠视觉

描述:

此数据结构有所不同。但是,简单来说-正如您在所提供的图像中所观察到的那样,当您将数据添加到此数据结构中时,您会将其置于已存在的数据之上,而当您将其删除时,也将从顶部开始。您可以将其视为一堆书,从上到下一直一一阅读。

队列

排队视觉

描述:

这个特定的数据结构也有一些变化,但是用简单的术语来说-如您在提供的图像中看到的那样,当您将新元素添加到此数据结构中时,新元素会放在开头,而当您从列表中删除最后一个元素时,正在被删除。您可以将它想象成在一家商店排队等候的队列,那里的很多人都在后面等着轮到您到柜台付款。