剑指Offer——Java实现栈和队列的互模拟操作
来源:互联网 发布:ubuntu mv 目录非空 编辑:程序博客网 时间:2024/05/17 04:05
剑指Offer——Java实现栈和队列的互模拟操作
栈模拟队列
题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。
思路:其实就是把队列正常入栈,出栈的时候先把栈里的内容按顺序搬到另一个栈里,负负得正,这样再按顺序出栈的时候,就成了入栈前队列的顺序
package cn.edu.ujn.demo;import java.util.Stack;import org.junit.Test;public class Stack2Queue { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); // 入栈函数 public void push(int num) { stack1.push(num); // 要往栈中压入什么就直接用栈的push方法就好了 } // 出栈函数 public int pop() { Integer re = null; if (!stack2.empty()) { // 如果栈2不是空的,那么把最上面那个取出来 re = stack2.pop(); } else { // 如果栈2是空的,就把栈1里的数一个个取出来,放到栈2里 while (!stack1.empty()) { re = stack1.pop(); stack2.push(re); } // 栈2里有数之后,再次把里面的数取出来 if (!stack2.empty()) { re = stack2.pop(); } } return re; } @Test public void test(){ Stack2Queue sq = new Stack2Queue(); sq.push(1); sq.push(3); System.out.println("...:" + sq.pop()); System.out.println("...:" + sq.pop()); }}
队列模拟栈
题目:JAVA实现用两个队列来实现一个栈,完成栈的Push和Pop操作
package cn.edu.ujn.demo;import java.util.LinkedList;public class Queue2Stack { private LinkedList<String> queue1; private LinkedList<String> queue2; public Queue2Stack(){ queue1 = new LinkedList<String>(); queue2 = new LinkedList<String>(); } public String pop(){ String re =null; if(queue1.size() == 0 && queue2.size() == 0){ return null; } if(queue2.size() == 0){ while(queue1.size() >0){ re = queue1.removeFirst(); if(queue1.size() != 0){ queue2.addLast(re); } } }else if(queue1.size() == 0){ while(queue2.size() >0){ re = queue2.removeFirst(); if(queue2.size()!=0){ queue1.addLast(re); } } } return re; } public String 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); } return str; } public static void main(String[] args) { Queue2Stack stack = new Queue2Stack(); String tmp; stack.push("1"); stack.push("2"); stack.push("3"); tmp = stack.pop(); System.out.println(tmp);//3 stack.push("4"); tmp = stack.pop(); System.out.println(tmp);//4 tmp = stack.pop(); System.out.println(tmp);//2 stack.push("5"); stack.push("6"); tmp = stack.pop(); System.out.println(tmp);//6 tmp = stack.pop(); System.out.println(tmp);//5 tmp = stack.pop(); System.out.println(tmp);//1 }}
2 0
- 剑指Offer——Java实现栈和队列的互模拟操作
- 剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- 《剑指Offer》用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。java
- 剑指offer之两个栈模拟队列操作
- 剑指offer-队列和栈操作
- 《剑指offer》栈和队列——用两个栈实现一个队列
- 《剑指Offer》用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
- 剑指Offer:面试题7——用两个栈实现队列(java实现)
- (C++)栈和队列的模拟实现
- 剑指offer-两个栈模拟队列
- 剑指offer(java代码)——用两个栈实现队列
- 剑指offer——用两个栈实现队列(Java)
- 剑指offer——双栈实现队列pop和push
- 【剑指offer】2.3.5栈和队列——面试题7:用两个栈实现队列
- 《剑指offer》用两个队列实现栈 Java版实现
- 通过git获取u-boot
- 字符串转换成数字的三种方法 js
- 数据库oracle--游标的使用
- 输出以交换后的两个数
- JMeter学习-参数化
- 剑指Offer——Java实现栈和队列的互模拟操作
- resin在linux下下载中文乱码的问题
- MyEclipse报错:Multiple markers at this line - The type java.io.ObjectInputStream cannot be resolved.
- Java实现算法导论中快速傅里叶变换FFT递归算法
- C# 斐波那契数列
- 是时候脱离eclipse了(IDEA篇)
- Thrift学习笔记(6)--Spring集成Thrift,实现服务端和客户端代理
- 给ABBYY FineReader重编文档页面号码的方法
- 数据库oracle--commit与不commit