剑指offer面试题9-用两个栈实现队列

剑指offer面试题9:用两个栈实现队列

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数push 和pop,分别完成在队列尾部插入结点和在队列头部删除结点的功能。

思路:我们知道,栈只能实现先进后出,但是队列是先进先出,对于栈来说,每次弹出的是栈顶元素,但是队列弹出的却是栈底的元素,所以我们需要用一个容器先暂存栈底元素上面的元素,然后再弹出,那么另外这个容器当然也是一个栈。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let Pop = []
let Push = []
function push(node){
while(Pop.length !== 0){
Push.push(Pop.pop())
}
Push.push(node)
}
function pop(){
while(Push.length !== 0){
Pop.push(Push.pop())
}
return Pop.pop()
}
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2021 AURORA_ZXH
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信