0%

双栈队列

问题描述:

编写一个类,只能用两个栈结构实现队列,支持队列的基本操作(add,poll,peek)。

原理

很简单,甚至有一点脱裤子放屁的感觉。

将数据全部导入栈 1 ,再讲栈 1 的数据全部倒入栈 2。

这样,栈 2 的出队列元素,就和队列的出队列元素一样了。

是不是很简单,我都不想写代码了。

注意点

  1. 如果倾倒栈 1 的元素,必须一次性倒空。

  2. 如果栈 2 中有元素,则不能倾倒栈 1 的元素。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
data = [5,4,3,2,1]
stack1 = [None for k in range(len(data))]
top1 = -1
stack2 = [None for k in range(len(data))]
top2 = -1

for i in range(len(data)):
stack1[i] = data[i]
top1 += 1
for i in range(len(data)):
stack2[i] = stack1[top1 - i]
top2 += 1
print(stack2)
请我喝杯咖啡吧~