Python中如何实现双端队列和栈的比较

2023-04-11 00:00:00 python 队列 如何实现

双端队列(deque)和栈(stack)都可以用于存储数据并支持检索、添加、删除等操作,但它们的实现方式和使用场景略有不同。

双端队列可以从队头或队尾添加或删除元素,因此适用于需要在两端频繁操作的情况,比如广度优先搜索和滑动窗口。

栈只能从栈顶添加和删除元素,因此适用于后进先出的场景,比如表达式求值和函数调用。

下面是Python中实现双端队列和栈的示例代码:

双端队列

使用collections中的deque模块可以轻松创建双端队列,常用方法包括append、appendleft、pop、popleft等:

from collections import deque

deque1 = deque(['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm'])
print(deque1) # deque(['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm'])

deque1.append('皮')
deque1.append('蛋')
deque1.append('编')
deque1.append('程')
deque1.appendleft('h')
print(deque1) # deque(['h', 'p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '皮', '蛋', '编', '程'])

deque1.pop()
deque1.popleft()
print(deque1) # deque(['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '皮', '蛋'])

使用列表来实现栈也很简单,常用方法包括append、pop等:

stack1 = []

stack1.append('p')
stack1.append('i')
stack1.append('d')
stack1.append('a')
stack1.append('n')
stack1.append('c')
stack1.append('o')
stack1.append('d')
stack1.append('e')
stack1.append('.')
stack1.append('c')
stack1.append('o')
stack1.append('m')
print(stack1) # ['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm']

stack1.append('皮')
stack1.append('蛋')
stack1.append('编')
stack1.append('程')
print(stack1) # ['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '皮', '蛋', '编', '程']

stack1.pop()
stack1.pop()
print(stack1) # ['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '皮']

相关文章