JAVA实现用两个队列实现栈和用两个栈实现队列
来源:互联网 发布:js div点击事件 编辑:程序博客网 时间:2024/05/22 12:41
栈实现队列
package Queue;import java.util.Stack;//用两个栈来实现队列/** *思路:栈s1表示插入栈,栈s2表示弹出栈 *入队列直接入s1 *出队列分两种情况 *1) 如s2不为空,直接s2弹出元素 *2)如果s2为空,依次弹出s1数据放入s2,直到s1为空,然后再弹出s2的数据 * */public class MyQueue{private Stack s1=new Stack ();private Stack s2=new Stack ();//入队列public synchronized void push(E e){s1.push(e);}//出队列public synchronized E pop(){if(s2.isEmpty()){while(!s1.isEmpty()){s2.push(s1.pop());}}return s2.pop();}public synchronized boolean empty(){return s1.isEmpty()&&s2.isEmpty();}public static void main(String[] args){MyQueue queue=new MyQueue ();queue.push(1);queue.push(2);System.out.println("队列元素:"+queue.pop());System.out.println("队列元素:"+queue.pop());}}
结果如下:
队列实现栈
package Queue;//用两个队列实现栈/** * 思路:用队列q1模拟入队列,q2,q1出队列 * 入队:直接压入q1 * 出队:(1)如果q1只有一个元素,那么q1出队列 * (2)q1不单单只有一个元素,q1总除了最后一个元素,全部入队列q2,输出那个最后元素, * 然后在把q2全部入队列q1; * @param* */public class MyStack {private Queue q1=new Queue();private Queue q2=new Queue();//入栈操作public synchronized void push(E e) throws Exception{q1.put(e);}//出栈操作public synchronized E pop() throws Exception{E e=null;if(q1.size()!=0){if(q1.size()==1){e=(E) q1.get();}else{while(q1.size()!=1){q2.put(q1.get());}e=(E)q1.get();while(q2.size()!=0){q1.put(q2.get());}}}return e;}//判断队列是否为空public boolean isEmpty(){return q1.isEmpty();}public static void main(String[] args){MyStack stack=new MyStack();try {stack.push(1);stack.push(2);stack.push(3);System.out.println("出栈元素:"+stack.pop());System.out.println("出栈元素:"+stack.pop());System.out.println("出栈元素:"+stack.pop());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
结果如下:
阅读全文
0 0
- Java 两个栈实现队列和两个队列实现栈
- JAVA实现用两个队列实现栈和用两个栈实现队列
- 用两个栈实现队列java实现
- 用两个栈实现队列 & 用两个队列实现栈
- 用两个队列实现栈&用两个栈实现队列
- 用两个栈实现队列 & 两个队列实现一个栈
- 两个栈实现队列&&用两个队列实现一个栈
- 用两个栈实现队列 & 两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个队列实现栈
- 用两个栈实现队列
- 用两个队列实现栈
- 用两个栈实现队列
- DOM对象转化成jQuery对象
- Mysql授权新建用户
- Qt学习资料
- C#与C++数据类型比较及结构体转换[整理]
- 做保险,跟对人很重要
- JAVA实现用两个队列实现栈和用两个栈实现队列
- c# 修改注册表后不重启计算机生效
- 值传递和引用传递
- java web学习总结33:使用JDBC对数据库进行CRUD
- JSP中<base href="<%=basePath%>">作用
- canvas
- Python定义的函数(或调用)中参数*args 和**kwargs的用法
- Linux配置本地yum源
- 应用无法启动,并且不报错的总结