两个栈实现一个队列
思路
栈:后进先出
队列:先进先出
将数据进入到一个栈,然后再让另一个栈接受弹出的数据,再pop第二个栈即可得到”先进先出”的序列
需要注意点:
一个数据出队列之后,如果再加入新的数据就会影响第二个栈的弹出顺序
例如:1,2,3,4——>4,3,2,1 1出队列之后加入5,如果还是第二个栈的状态就会先输出5,这明显是有问题的
所以需要在第二个栈弹出数据后再恢复到第一个栈的状态
代码
1 |
|
然而在实际应用中有shift这个函数可以直接使用
栈:后进先出
队列:先进先出
将数据进入到一个栈,然后再让另一个栈接受弹出的数据,再pop第二个栈即可得到”先进先出”的序列
需要注意点:
一个数据出队列之后,如果再加入新的数据就会影响第二个栈的弹出顺序
例如:1,2,3,4——>4,3,2,1 1出队列之后加入5,如果还是第二个栈的状态就会先输出5,这明显是有问题的
所以需要在第二个栈弹出数据后再恢复到第一个栈的状态
1 |
|
然而在实际应用中有shift这个函数可以直接使用