zoukankan      html  css  js  c++  java
  • 剑指offer 用两个栈实现队列

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

    代码:

     1 class Solution
     2 {
     3 public:
     4     void push(int node) {
     5         stack1.push( node );
     6     }
     7     int pop() {
     8         int top_elem;
     9         if ( stack2.empty() ){
    10             while ( !stack1.empty() ){
    11                 stack2.push( stack1.top() );
    12                 stack1.pop();
    13             }
    14         }
    15         top_elem = stack2.top();
    16         stack2.pop();
    17         return top_elem;
    18     }
    19  
    20 private:
    21     stack<int> stack1;
    22     stack<int> stack2;
    23 };

    我的笔记:由于栈的特点,先进后出,而队列的特点是先进先出,因此在入栈 push 时无异,但出栈 pop 时需要两个栈来交替操作,即收到 pop 指令时,先检测第二栈 stack2 是否为空,若不为空,则直接出栈栈顶元素;若为空,则将 stack1 中元素迭代 push 到 stack2 中,直至 stack1 清空。

  • 相关阅读:
    一、Django CBV and Django RestFramework
    Web框架及Django初始化
    HTTP协议
    Mysql之存储引擎
    Django之ORM字段相关
    Django之视图
    Django之初步实现登录功能,APP及ORM
    jQuery
    C#基础:飞行棋游戏
    C#基础练习
  • 原文地址:https://www.cnblogs.com/john1015/p/12909936.html
Copyright © 2011-2022 走看看