剑指Offer - 5 - 用两个栈实现队列

题目描述

用两个栈实现队列

思路

用一个栈来保存数据,其中栈底是队尾,栈顶是队头
push时,需要先把数据栈中数据都弹出然后推入数据,再把弹出的数据推回
pop则直接弹出栈顶即可

Code

  • Python
# -*- coding:utf-8 -*-
items = []
tmp = []
class Solution:
    def push(self, node):
        while len(items) != 0:
            tmp.append(items.pop())
        items.append(node)
        while len(tmp) != 0:
            items.append(tmp.pop())
    def pop(self):
        return items.pop()
  • JavaScript
const stack1 = []
const stack2 = []

function push(node)
{
  while(stack1.length !== 0) {
    stack2.push(stack1.pop())
  }
  stack1.push(node)
  while(stack2.length !== 0) {
    stack1.push(stack2.pop())
  }
}
function pop()
{
  return stack1.pop()
}

你可能感兴趣的:(剑指Offer - 5 - 用两个栈实现队列)