用两个栈实现队列(python)
题目描述
- # -*- coding:utf-8 -*-
- class Solution:
- def __init__(self):
- self.stack1 = [] #用来入队
- self.stack2 = [] #用来出队
- #将内容先push进一个栈stack1,
- #判断stack2是否为空,空:将栈stack1中的元素pop(删除并返回数组的最后一个元素)
- #并push进stack2,非空:直接出栈
- #出栈时,先push进stack1先从stack2出来,即:实现了先进先出
- def push(self, node):
- # write code here
- self.stack1.append(node) #入队
- def pop(self):
- # return xx
- if self.stack2: #如果stack2有元素,直接出队
- return self.stack2.pop()
- while self.stack1: #当stack2没有元素时,将stack1的元素逆序存入到stack2中
- self.stack2.append(self.stack1.pop())
- return self.stack2.pop()
- #include<iostream>
- #include<stack>
- #include<queue>
- using namespace std;
- class Solution
- {
- public:
- void push(int node)
- {
- stack1.push(node);
- }
- int pop()
- {
- int tmp;
- if (stack2.empty())
- {
- while (!stack1.empty())
- {
- tmp = stack1.top();
- stack2.push(tmp);
- stack1.pop();
- }
- }
- tmp = stack2.top();
- stack2.pop();
- return tmp;
- }
- private:
- stack<int> stack1;
- stack<int> stack2;
- };
- int main()
- {
- Solution *s = new Solution();
- for (int i = 0; i<10; i++)
- {
- s->push(i);
- if (i == 5)
- {
- s->pop();
- cout << s->pop() << endl;
- }
- }
- system("pause");
- return 0;
- }
用两个栈实现队列(python)的更多相关文章
- 两个栈实现队列 Python实现
# coding=utf-8 MAX_LENGTH = 100 SUCCESS = 1 FAIL = 0 ERROR = -1 class Queue(object): stack_fir = Non ...
- 两个栈实现队列 牛客网 程序员面试金典 C++ Python
两个栈实现队列 牛客网 程序员面试金典 C++ Python 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. C++ //run:5ms memeory ...
- 用两个栈实现队列与用两个队列实现栈(Python实现)
用两个栈实现队列: class QueueWithTwoStacks(object): def __init__(self): self._stack1 = [] self._stack2 = [] ...
- 《剑指offer》用两个栈实现队列
本题来自<剑指offer> 用两个栈实现队列 题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 队列定义:先进先出 栈定义:先进后出 要 ...
- 剑指Offer面试题:6.用两个栈实现队列
一.题目:用两个栈实现队列 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 原文是使用 ...
- 剑指OFFER之用两个栈实现队列(九度OJ1512)
题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例.对于每个测试样例,第一行输入一个n(1<=n<=100 ...
- 九度OJ 1512 用两个栈实现队列 【数据结构】
题目地址:http://ac.jobdu.com/problem.php?pid=1512 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 输入: 每 ...
- 两个栈实现队列+两个队列实现栈----java
两个栈实现队列+两个队列实现栈----java 一.两个栈实现一个队列 思路:所有元素进stack1,然后所有出s ...
- Algorithm --> 两个栈实现队列和两个队列实现栈
两个栈实现队列和两个队列实现栈 队列(queue)先进先出的线性表:栈(stack)先进后出的线性表. 两个栈实现队列 法一思路: s1是入栈的,s2是出栈的. 入队列:直接压入s1即可: 出队列:如 ...
随机推荐
- Android自定义View学习(二)
绘制顺序 参考:HenCoder Android 开发进阶:自定义 View 1-5 绘制顺序 绘制过程 包括 背景 主体(onDraw()) 子 View(dispatchDraw()) 滑动边缘渐 ...
- div的全屏与退出全屏
div的全屏与退出全屏 作用:将div全屏与退出全屏,一般播放器使用较多. html按钮: <button onclick="showFull();"> 全屏 < ...
- 登录之md5加密
语句: password = hex_md5(password); 引入js文件: md5.js: /* * A JavaScript implementation of the RSA Data S ...
- leetcode999
class Solution: def numRookCaptures(self, board: 'List[List[str]]') -> int: basei = 0 basej = 0 r ...
- node.js 爬虫中文乱码 处理
爬虫中文乱码可做如下处理 import request from 'superagent'; import cheerio from 'cheerio';//类似jquery写法 const Icon ...
- Git 全局配置查看修改
查看 git config --list git config --global --list 新增 git config --global user.emal=123 删除 git config - ...
- RocketMQ服务搭建_1
rocketmq是阿里研发,并贡献给Apache的一款分布式消息中间件. RcoketMQ 是一款低延迟.高可靠.可伸缩.易于使用的消息中间件. ACE环境:(Adapted communicatio ...
- 跨域(四)——document.domain
浏览器有一个合法的性质:一个页面可以设置document.domain为当前子域或比当前子域更高级的域.一般顶级就到了根域,如果设置为其他域,浏览器就会报权限错误. 利用这个性质,我们可以通过设置do ...
- linux 内核假死循环导致的问题
[, comm: -IFileSender Tainted: G B ENX -- ZTE Grantley/S1008 [:[<ffffffff810fb2cb>] [<fffff ...
- 【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 ...