用两个栈实现队列(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即可: 出队列:如 ...
随机推荐
- Windows系统不同磁盘间的扩容教程
1.windows系统不同磁盘的空间扩展: https://www.cnblogs.com/yunweis/p/8023098.html
- Android呼吸灯效果实现
最近需要做一个搜索动画的呼吸灯效果,在网上查了下有以下两种实现方式,现记录下来. 实现呼吸灯效果本质上都是使用ImageView动画,实现alpha值变化. 第一种方式,直接使用动画实现,代码如下: ...
- Kubernetes的ConfigMap说明
这篇博文,我们来说一说,关于在kubernetes的pod中自定义配置的问题. 我们知道,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如说在web的程序中,需要连接数据库,缓存甚至是队列等等. ...
- 关于sql链接超时的问题
也许你会说,我在连接字符串中已经 设置了 Connect Timeout=80000 ,并且数据库中超时连接也是设置的值是一个很大的值.为啥到了30秒,仍然超时了呢?? 这是因为: ...
- tensorflow实战系列(三)一个完整的例子
#!/usr/bin/env python2# -*- coding: utf-8 -*-"""Created on Wed Jan 18 08:42:55 2017 @ ...
- virtual安装linux
virtual直接在官网上下载即可. 下载iso的镜像文件.新建 ->设置创建 redhat 根据镜像文件选择需要创建的版本. 创建后运行,如果出现一直黑屏,需要查看电脑支持虚拟是否启动. 右C ...
- NSTimer内存泄漏
用NSTimer调用 timer = [NSTimer scheduledTimerWithTimeInterval:timerInterval target:self selector:@selec ...
- 安装 nginx
一.安装准备 首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++.gcc.openssl-devel.pcre-devel和zlib ...
- Java继承与多态浅析
一.继承 1.通过extends继承的父类可以是不加abstract关键字的普通类,也可以是加了abstract关键字的抽象类.继承普通类时可以覆写父类的方法,或者创建自己独有的方法,或者这两 ...
- vim主题设定
Vim的颜色主题在/usr/share/vim/vim74/colors文件夹里. 打开vim后在normal模式下输入“:colorscheme”查看当前的主题,修改主题使用命令“:colorsch ...