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


    1. 题目描述

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

    2. 思想

    (1)栈的特点是先进后出,而队列的特点是先进先出;

    (2)因此,入队列的情况和入栈的情况一样stack.push(),用一个栈来模拟就可以了;

    (3)而出栈为出栈顶的元素,也即和输入相反(先进后出);然而出队为先进先出,因此借助第2个栈,将第一个站的元素放入第2栈中,再将第2个栈中的元素出栈,也即翻转两次实现了先进先出;

    (4)第2个栈为出队列用,当栈2为空时,将栈1中的元素入栈2;当栈2不为空时,也即此时进行出队操作,直接将栈2中元素依次弹出

    3. C++完整代码

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <vector>
     4 #include <stack>
     5 
     6 
     7 using namespace std;
     8 
     9 class Solution
    10 {
    11 public:
    12     void push(int node) {
    13         stack1.push(node);
    14     }
    15 
    16     int pop() {
    17         while (stack2.empty())
    18         {
    19             while (!stack1.empty())
    20             {
    21                 stack2.push(stack1.top());
    22                 stack1.pop();
    23             }
    24         }
    25         int el = stack2.top();
    26         stack2.pop();
    27         return el;
    28     }
    29 
    30 private:
    31     stack<int> stack1;
    32     stack<int> stack2;
    33 };
    34 
    35 int main()
    36 {
    37     Solution *s = new Solution();
    38     for (int i = 0; i<8; i++)
    39     {
    40         s->push(i);
    41         if (i >= 4)
    42         {
    43             int res = s->pop();
    44             cout << res << ' ';
    45         }
    46     }
    47     cout << endl;
    48     system("pause");
    49     return 0;
    50 }
    View Code

    参考资料

    https://blog.csdn.net/howe1233/article/details/89504456

  • 相关阅读:
    cocos2dx android java调用C++
    cocos2dx android c++调用java
    cocos2dx android collection
    cocos2dx学习之windows android环境搭建
    windows phone 8.0 与 windows phone7.1区别
    C#文件同步工具教程
    Web2.0时代,RSS你会用了吗?(技术实现总结)
    介绍一篇关于session的好文章,写的很详细(jspservlet 技术)
    利用HttpModuler实现WEB程序同一时间只让一个用户实例登陆
    css
  • 原文地址:https://www.cnblogs.com/wxwhnu/p/11400318.html
Copyright © 2020-2023  润新知