剑指offer 用两个栈实现一个队列

£神魔★判官ぃ 2021-11-04 12:32 378阅读 0赞

剑指offer题型分类及各题的代码及解题思路

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

class Solution
{
public:
void push(int node) {

  1. \}
  2. int pop() \{
  3. \}

private:
stack stack1;
stack stack2;
};

<分析>:

  • 入队:将元素进栈A
  • 出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;如果不为空,栈B直接出栈。

C++实现代码如下:

  1. void push(int node)
  2. {
  3. stack1.push(node);
  4. }
  5. int pop()
  6. {
  7. int top;
  8. if(stack2.empty())
  9. {
  10. while(!stack1.empty())
  11. {
  12. top = stack1.top();
  13. stack2.push(top);
  14. stack1.pop();
  15. }
  16. }
  17. top = stack2.top();
  18. stack2.pop();
  19. return top;
  20. }

发表评论

表情:
评论列表 (有 0 条评论,378人围观)

还没有评论,来说两句吧...

相关阅读