用双队列实现栈和用双栈实现队列
2016-07-13 17:31
288 查看
用双队列实现栈
import java.util.LinkedList;
public class TestMain {
public static void main(String[] args) throws Exception {
twoqueueltostack t = new twoqueueltostack();
t.push(1);
t.push(2);
t.push(3);
System.out.println(t.pop());
System.out.println(t.pop());
}
}
class twoqueueltostack{
LinkedList<Integer> queuel1 = new LinkedList<Integer>();
LinkedList<Integer> queuel2 = new LinkedList<Integer>();
public void push(int node){
if(queuel1.size()==0 && queuel2.size()==0){
queuel1.add(node);
}
if(queuel1.size()!=0){
queuel1.add(node);
}else if(queuel2.size()!=0){
queuel2.add(node);
}
}
public int pop() throws Exception{
Integer temp =null;
if(queuel1.size()==0 && queuel2.size()==0){
throw new Exception("栈为空");
}
if(queuel2.size()==0){
while(queuel1.size()>0){
temp = queuel1.remove();
if(queuel1.size()!=0){
queuel2.add(temp);
}
}
}else if(queuel1.size()==0){
while(queuel2.size()>0){
temp = queuel2.remove();
if(queuel2.size()!=0){
queuel1.add(temp);
}
}
}
return temp;
}
}
用双栈实现队列
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop()throws Exception {
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
if(stack2.isEmpty()){
throw new Exception("队列为空,不能删除");
}
return stack2.pop();
}
}
import java.util.LinkedList;
public class TestMain {
public static void main(String[] args) throws Exception {
twoqueueltostack t = new twoqueueltostack();
t.push(1);
t.push(2);
t.push(3);
System.out.println(t.pop());
System.out.println(t.pop());
}
}
class twoqueueltostack{
LinkedList<Integer> queuel1 = new LinkedList<Integer>();
LinkedList<Integer> queuel2 = new LinkedList<Integer>();
public void push(int node){
if(queuel1.size()==0 && queuel2.size()==0){
queuel1.add(node);
}
if(queuel1.size()!=0){
queuel1.add(node);
}else if(queuel2.size()!=0){
queuel2.add(node);
}
}
public int pop() throws Exception{
Integer temp =null;
if(queuel1.size()==0 && queuel2.size()==0){
throw new Exception("栈为空");
}
if(queuel2.size()==0){
while(queuel1.size()>0){
temp = queuel1.remove();
if(queuel1.size()!=0){
queuel2.add(temp);
}
}
}else if(queuel1.size()==0){
while(queuel2.size()>0){
temp = queuel2.remove();
if(queuel2.size()!=0){
queuel1.add(temp);
}
}
}
return temp;
}
}
用双栈实现队列
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop()throws Exception {
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
if(stack2.isEmpty()){
throw new Exception("队列为空,不能删除");
}
return stack2.pop();
}
}
相关文章推荐
- Unity 3D 导出Android Eclipse项目
- git merge –squash介绍
- wifi简要分析
- 前端漏洞
- 学习笔记:A*算法
- Qt OpenCV 图像显示转换
- iOS 中如何判断当前是2G/3G/4G/5G/WiFi
- Android NFC 开发 博客链接
- HttpClient设置HTTP请求头Header
- DM8168心得之SD卡快速分区制作
- hive相关元数据迁移(mysql)
- FreeSwitch Event Socket Command(事件套接字命令行)
- 子元素选择器与定位过滤器的区别
- hive dynamic partitions insert java.lang.OutOfMemoryError: Java heap space
- LeetCode Ugly Number II(丑数的计算)
- Linux QT环境的搭建
- [心得]传统IT转互联网面试经验分享
- yarn NullPointerException
- API - PtOSContainer
- php 环信 接口的例子