两个stack实现一个queue
package com.hzins.suanfa; import java.util.Stack;
/**
* 两个stack实现一个queue
* @author Administrator
*
*/
public class TwoStackToQueue {
private Stack<Integer> stack1;
private Stack<Integer> stack2;
public TwoStackToQueue(){
stack1 = new Stack<Integer>();
stack2 = new Stack<Integer>();
}
/**
* 入队
* @param value
*/
public void push(int value){
stack1.push(value);
}
/**
* 出队
*/
public int pop(){
while(!stack2.isEmpty()){
return stack2.pop();
}
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
return stack2.pop();
}
public static void main(String[] args) {
// Stack<Integer> stack1 = new Stack<Integer>();
// stack1.push(1);
// stack1.push(2);
// stack1.push(3);
// stack1.push(4);
// System.out.println(stack1.size());
// System.out.println(stack1.pop());
// System.out.println(stack1.pop());
// System.out.println(stack1.pop());
// System.out.println(stack1.pop());
TwoStackToQueue queue = new TwoStackToQueue();
queue.push(1);
queue.push(2);
queue.push(3);
System.out.println(queue.pop());
System.out.println(queue.pop());
queue.push(4);
System.out.println(queue.pop());
}
}
两个stack实现一个queue的更多相关文章
- 用两个stack实现一个队列
class Queue { stack<int> input, output; public: void push(int x) { input.push(x); } void pop(v ...
- 用两个Stack来实现一个Queue
import java.util.Stack; /** * 问题:用两个Stack来实现一个Queue; * 方法:栈的特点是先进后出:而队列的特点是先进先出: * 用两个栈正好能把顺序调过来: * ...
- C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、SortedList类)
1.ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在ArrayList中主要使用Add.Remove.RemoveAt.Insert四个方法对栈进行操作.Add方法 ...
- 《剑指Offer》附加题_用两个队列实现一个栈_C++版
在<剑指Offer>中,在栈和队列习题中,作者留下来一道题目供读者自己实现,即"用两个队列实现一个栈". 在计算机数据结构中,栈的特点是后进先出,即最后被压入(push ...
- python基本数据结构栈stack和队列queue
1,栈,后进先出,多用于反转 Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作. 栈的实现: class Stack(object): #初始化栈为空列表 def _ ...
- 转【c语言】两个堆栈组成一个队列
假设有两个堆栈,分别是s1,s2,现在有数列“1,2,3,4,5”,要让这个数列实现先进先出的功能,也就是用两个堆栈组成一个队列,如何实现? 分析: 先将数列压入栈s1,数列在栈中由顶到底的元素为“5 ...
- 转:C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、Sort)
C#常用的集合类型(ArrayList类.Stack类.Queue类.Hashtable类.Sort) .ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在Array ...
- java两个栈实现一个队列&&两个队列实现一个栈
栈:先进后出 队列:先进先出 两个栈实现一个队列: 思路:先将数据存到第一个栈里,再将第一个栈里的元素全部出栈到第二个栈,第二个栈出栈,即可达到先进先出 源码: class Queue<E&g ...
- c# 写着玩的,两个Task并发,一个写队列一个读队列的异常情况
class Program { class TestEnqueue { static Queue<string> str = new Queue<string>(); publ ...
随机推荐
- Python 自动化之验证码识别
之前公司的验证码比较简单,可以采取直接破解的方式进行登录 部分代码如下: # -*- coding: utf-8 -*- from selenium import webdriver from sel ...
- Cocos2d-x 3.2 之 别踩白块(第三篇)
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- Hadoop学习笔记——Hadoop经常使用命令
Hadoop下有一些经常使用的命令,通过这些命令能够非常方便操作Hadoop上的文件. 1.查看指定文件夹下的内容 语法: hadoop fs -ls 文件文件夹 2.打开某个已存在的文件 语法: h ...
- java基础之【堆、栈、方法区】结构图
|--数组实例化过程 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHViaWFvXzA2MTg=/font/5a6L5L2T/fontsize/400/ ...
- Node-Webkit - package.json - 参数设置
必填: main :(string)APP的主入口,指定一个html文件,如:main:"index.htm". name :(string)APP的名称,必须具有唯一性. 例子: ...
- 【BZOJ3651】网络通信 LCT
[BZOJ3651]网络通信 Description 有一个由M 条电缆连接的 N 个站点组成的网络.为了防止垄断,由 C 个公司控制所有的电缆,规定任何公司不能控制连接同一个站点的两条以上的电缆(可 ...
- bug_1——oracle listagg():列转行
select listagg(字段名 ,',') within group (order by 字段名) from表 where 条件 listagg():列转行 WM_CONCAT():和并列 ...
- java基础入门之九九乘法表
/* 自学java 九九乘法表 Power by Stuart Date: 2015.4.23 */public class Math { public static void main (Strin ...
- python学习-4-类的使用
class Animal: def __init__(self, name): # Constructor of the class self.name = name def talk(self): ...
- linux 8 -- 管道组合Shell命令进行系统管理
二十. 通过管道组合Shell命令获取系统运行数据: 1. 输出当前系统中占用内存最多的5条命令: #1) 通过ps命令列出当前主机正在运行的所有进程. #2) 按照第五个字段基于数 ...