public class StackByQueue {
private LinkedList<String> queue1;
private LinkedList<String> queue2;
public StackByQueue() {
queue1 = new LinkedList<String>();
queue2 = new LinkedList<String>();
} public String pop() {
String str = null;
if(queue1.size() ==0 && queue2.size() ==0) {
return null;
}
if(queue2.size() == 0) {
while(queue1.size() > 0) {
str = queue1.removeFirst();
if(queue1.size() != 0) {//要删除的栈元素不会加入队列的尾部
queue2.addLast(str);
} }
}else if(queue1.size() == 0){
while(queue2.size() > 0) {
str = queue2.removeFirst();
if(queue2.size() != 0) {
queue1.addLast(str);
}
}
}
return str;
} public void push(String str) {
if(queue1.size() == 0 && queue2.size() == 0) {
queue1.addLast(str);
}
if(queue1.size() != 0) {
queue1.addLast(str);
}else if (queue2.size() != 0) {
queue2.addLast(str);
}
} public static void main(String[] args) {
StackByQueue stackByQueue = new StackByQueue();
stackByQueue.push("1");
stackByQueue.push("2");
stackByQueue.push("3");
System.out.println(stackByQueue.pop());
stackByQueue.push("8");
System.out.println(stackByQueue.pop());
} }

两个队列实现一个栈,剑指offer P59的更多相关文章

  1. 《剑指Offer》附加题_用两个队列实现一个栈_C++版

    在<剑指Offer>中,在栈和队列习题中,作者留下来一道题目供读者自己实现,即"用两个队列实现一个栈". 在计算机数据结构中,栈的特点是后进先出,即最后被压入(push ...

  2. 剑指offer编程题Java实现——面试题7相关题用两个队列实现一个栈

    剑指offer面试题7相关题目:用两个队列实现一个栈 解题思路:根据栈的先入后出和队列的先入先出的特点1.在push的时候,把元素向非空的队列内添加2.在pop的时候,把不为空的队列中的size()- ...

  3. 两个栈实现队列 牛客网 剑指Offer

    两个栈实现队列 牛客网 剑指Offer 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. class Solution: def __init__(sel ...

  4. C++两个队列实现一个栈

    C++两个队列实现一个栈 /* * source.cpp * * Created on: 2015年6月21日 * Author: codekiller */ #include "iostr ...

  5. java两个栈实现一个队列&&两个队列实现一个栈

    栈:先进后出  队列:先进先出 两个栈实现一个队列: 思路:先将数据存到第一个栈里,再将第一个栈里的元素全部出栈到第二个栈,第二个栈出栈,即可达到先进先出 源码: class Queue<E&g ...

  6. python两个队列实现一个栈和两个栈实现一个队列

    1.两个栈实现一个队列 两个栈stack1和stack2, push的时候直接push进stack1,pop时需要判断stack1和stack2中的情况.如果stack2不为空的话,直接从stack2 ...

  7. 【校招面试 之 剑指offer】第9-2题 用两个队列实现一个栈

    #include<iostream> #include<queue> using namespace std; // 对于出栈解决的思路是:将queue1的元素除了最后一个外全 ...

  8. 用两个栈实现队列,剑指offer P59

    public class QueueByStack { private Stack<Integer> stack1; private Stack<Integer> stack2 ...

  9. C++版 - 剑指offer 面试题7:用两个栈实现队列 题解

    用两个栈实现队列 提交网址:  http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&tqId=1 ...

随机推荐

  1. Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看

    Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看 來自TechEd North America 2013的第一手消息 以下資訊均 ...

  2. linux下编译运行驱动

    linux下编译运行驱动 嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发. 按照如下方 ...

  3. Linux-gate.so技术细节

    1. linux-gate.so是什么参考这里:http://www.trilithium.com/johan/2005/08/linux-gate/简而言之,linux-gate.so是为了实现用户 ...

  4. Kafka consumer处理大消息数据问题

    案例分析 处理kafka consumer的程序的时候,发现如下错误: ERROR [2016-07-22 07:16:02,466] com.flow.kafka.consumer.main.Kaf ...

  5. oracle表空间表分区详解及oracle表分区查询使用方法(转+整理)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  6. html&css入门详解

    本系列主要讲解html与css的知识点,因为是参考的英文版的<html&css design and build websites>,所以可能会有个人翻译理解上的差错,希望观者能够 ...

  7. 有关linux标准输出、标准输入、标准错误的重定向问题

    1.简单的命令行重定向问题. 例:ls  -al  test   test1  test2    1>out.txt  2>err.tx 这里ls这句命令行命令之后将标准输入重定向到out ...

  8. hdu1037

    #include <iostream> #include <cstdio> using namespace std; int main() { int a,b,c; while ...

  9. 时间序列 预测分析 R语言

    在对短期数据的预测分析中,我们经常用到时间序列中的指数平滑做数据预测,然后根据不同. 下面我们来看下具体的过程 x<-data.frame(rq=seq(as.Date('2016-11-15' ...

  10. Ubuntu 实现点击菜单栏图标最小化程序

    compizconfig-settings-manager http://blog.csdn.net/wdjhzw/article/details/39136057