Python中的堆栈和队列

先决条件: 列表 Python中的Deque .

null

与C++ STL和java集合不同,Python确实有特定的类/接口 堆栈 队列 .以下是用Python实现的不同方法

1) 使用列表 堆栈 工作遵循“后进先出”的原则。此外,Python中的内置函数使代码简短。要将项目添加到列表顶部,即推送项目,我们使用 附加() 函数并弹出我们使用的元素 pop() 作用这些功能在终端操作中安静、高效、快速地工作。

让我们看一个例子,了解push()和pop()函数的工作原理: 例子:

# Python code to demonstrate Implementing
# stack using list
stack = [ "Amar" , "Akbar" , "Anthony" ]
stack.append( "Ram" )
stack.append( "Iqbal" )
print (stack)
# Removes the last item
print (stack.pop())
print (stack)
# Removes the last item
print (stack.pop())
print (stack)


输出:

['Amar', 'Akbar', 'Anthony', 'Ram', 'Iqbal']
Iqbal
['Amar', 'Akbar', 'Anthony', 'Ram']
Ram
['Amar', 'Akbar', 'Anthony']

队列 工作遵循“先进先出”的原则。下面是队列的实现列表。我们使用pop(0)从列表中删除第一项。

# Python code to demonstrate Implementing
# Queue using list
queue = [ "Amar" , "Akbar" , "Anthony" ]
queue.append( "Ram" )
queue.append( "Iqbal" )
print (queue)
# Removes the first item
print (queue.pop( 0 ))
print (queue)
# Removes the first item
print (queue.pop( 0 ))
print (queue)


输出:

['Amar', 'Akbar', 'Anthony', 'Ram', 'Iqbal']
Amar
['Akbar', 'Anthony', 'Ram', 'Iqbal']
Akbar
['Anthony', 'Ram', 'Iqbal']

2) 使用Deque 对于堆栈,列表实现可以很好地工作,并在O(1)时间内提供append()和pop()。当我们使用deque实现时,我们得到了相同的时间复杂度。

# Python code to demonstrate Implementing
# Stack using deque
from collections import deque
queue = deque([ "Ram" , "Tarun" , "Asif" , "John" ])
print (queue)
queue.append( "Akbar" )
print (queue)
queue.append( "Birbal" )
print (queue)
print (queue.pop())
print (queue.pop())
print (queue)


输出:

deque(['Ram', 'Tarun', 'Asif', 'John'])
deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar'])
deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar', 'Birbal'])
Birbal
Akbar
deque(['Ram', 'Tarun', 'Asif', 'John'])

但是,对于队列,上面的列表实现效率不高。在队列中,当从列表开始执行pop()时,速度较慢。这是由于list的属性造成的,它在结束操作时很快,但在开始操作时很慢,因为所有其他元素都必须逐个移动。 因此,我们更喜欢使用队列而不是列表,它是专门设计的,可以从前端和后端快速添加和弹出。

让我们看一个例子,试着理解使用集合的队列。德克:

# Python code to demonstrate Implementing
# Queue using deque
from collections import deque
queue = deque([ "Ram" , "Tarun" , "Asif" , "John" ])
print (queue)
queue.append( "Akbar" )
print (queue)
queue.append( "Birbal" )
print (queue)
print (queue.popleft())
print (queue.popleft())
print (queue)


输出:

deque(['Ram', 'Tarun', 'Asif', 'John'])
deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar'])
deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar', 'Birbal'])
Ram
Tarun
deque(['Asif', 'John', 'Akbar', 'Birbal'])

本文由 金莫伦卡 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享