题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
  1. # -*- coding:utf-8 -*-
  2. class Solution:
  3. def __init__(self):
  4. self.stack1 = [] #用来入队
  5. self.stack2 = [] #用来出队
  6. #将内容先push进一个栈stack1,
  7. #判断stack2是否为空,空:将栈stack1中的元素pop(删除并返回数组的最后一个元素)
  8. #并push进stack2,非空:直接出栈
  9. #出栈时,先push进stack1先从stack2出来,即:实现了先进先出
  10. def push(self, node):
  11. # write code here
  12. self.stack1.append(node) #入队
  13. def pop(self):
  14. # return xx
  15. if self.stack2: #如果stack2有元素,直接出队
  16. return self.stack2.pop()
  17. while self.stack1: #当stack2没有元素时,将stack1的元素逆序存入到stack2中
  18. self.stack2.append(self.stack1.pop())
  19. return self.stack2.pop()

 

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

  

 

用两个栈实现队列(python)的更多相关文章

  1. 两个栈实现队列 Python实现

    # coding=utf-8 MAX_LENGTH = 100 SUCCESS = 1 FAIL = 0 ERROR = -1 class Queue(object): stack_fir = Non ...

  2. 两个栈实现队列 牛客网 程序员面试金典 C++ Python

    两个栈实现队列 牛客网 程序员面试金典 C++ Python 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. C++ //run:5ms memeory ...

  3. 用两个栈实现队列与用两个队列实现栈(Python实现)

    用两个栈实现队列: class QueueWithTwoStacks(object): def __init__(self): self._stack1 = [] self._stack2 = [] ...

  4. 《剑指offer》用两个栈实现队列

    本题来自<剑指offer> 用两个栈实现队列 题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 队列定义:先进先出 栈定义:先进后出 要 ...

  5. 剑指Offer面试题:6.用两个栈实现队列

    一.题目:用两个栈实现队列 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 原文是使用 ...

  6. 剑指OFFER之用两个栈实现队列(九度OJ1512)

    题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例.对于每个测试样例,第一行输入一个n(1<=n<=100 ...

  7. 九度OJ 1512 用两个栈实现队列 【数据结构】

    题目地址:http://ac.jobdu.com/problem.php?pid=1512 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 输入: 每 ...

  8. 两个栈实现队列+两个队列实现栈----java

                                               两个栈实现队列+两个队列实现栈----java 一.两个栈实现一个队列 思路:所有元素进stack1,然后所有出s ...

  9. Algorithm --> 两个栈实现队列和两个队列实现栈

    两个栈实现队列和两个队列实现栈 队列(queue)先进先出的线性表:栈(stack)先进后出的线性表. 两个栈实现队列 法一思路: s1是入栈的,s2是出栈的. 入队列:直接压入s1即可: 出队列:如 ...

随机推荐

  1. Android自定义View学习(二)

    绘制顺序 参考:HenCoder Android 开发进阶:自定义 View 1-5 绘制顺序 绘制过程 包括 背景 主体(onDraw()) 子 View(dispatchDraw()) 滑动边缘渐 ...

  2. div的全屏与退出全屏

    div的全屏与退出全屏 作用:将div全屏与退出全屏,一般播放器使用较多. html按钮: <button onclick="showFull();"> 全屏 < ...

  3. 登录之md5加密

    语句: password = hex_md5(password); 引入js文件: md5.js: /* * A JavaScript implementation of the RSA Data S ...

  4. leetcode999

    class Solution: def numRookCaptures(self, board: 'List[List[str]]') -> int: basei = 0 basej = 0 r ...

  5. node.js 爬虫中文乱码 处理

    爬虫中文乱码可做如下处理 import request from 'superagent'; import cheerio from 'cheerio';//类似jquery写法 const Icon ...

  6. Git 全局配置查看修改

    查看 git config --list git config --global --list 新增 git config --global user.emal=123 删除 git config - ...

  7. RocketMQ服务搭建_1

    rocketmq是阿里研发,并贡献给Apache的一款分布式消息中间件. RcoketMQ 是一款低延迟.高可靠.可伸缩.易于使用的消息中间件. ACE环境:(Adapted communicatio ...

  8. 跨域(四)——document.domain

    浏览器有一个合法的性质:一个页面可以设置document.domain为当前子域或比当前子域更高级的域.一般顶级就到了根域,如果设置为其他域,浏览器就会报权限错误. 利用这个性质,我们可以通过设置do ...

  9. linux 内核假死循环导致的问题

    [, comm: -IFileSender Tainted: G B ENX -- ZTE Grantley/S1008 [:[<ffffffff810fb2cb>] [<fffff ...

  10. 【377】only one element in a tuple

    Recently I am doing the assignment of COMP9021. It is too difficult and it is about the Knight and K ...