2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > java实现-两个栈实现一个队列和两个队列实现一个栈

java实现-两个栈实现一个队列和两个队列实现一个栈

时间:2020-10-09 18:50:12

相关推荐

java实现-两个栈实现一个队列和两个队列实现一个栈

1.两个栈实现一个队列

思路:压入元素直接入stack1,删除元素先判断stack2中是否为空,如果不为空直接弹出;为空则将stack1中的元素取出压入 stack2中再弹出。代码:

import java.util.Stack;public class TwoStackToQueue {private Stack stack1 = new Stack();private Stack stack2 = new Stack();public void add(Integer n){stack1.push(n);}public Integer poll(){if(stack1.isEmpty()&&stack2.isEmpty()){return null;}if(stack2.isEmpty()){while(!stack1.isEmpty()){stack2.push(stack1.pop());}}return (Integer)stack2.pop();}public boolean isEmpty(){if(stack1.isEmpty()&&stack2.isEmpty()){return true;}else{return false;}}}复制代码

2.两个队列实现一个栈

思路:要用队列(先进先出)实现栈(先进后出),则是要获取deque1队尾的元素,所以可以把前n-1个元素压入空队列deque2中,弹出deque1剩余的一个队尾元素。代码:

import java.util.ArrayDeque;import java.util.Deque;public class TwoQueueToStack {private Deque<Integer> deque1;private Deque<Integer> deque2;public TwoQueueToStack(){deque1 = new ArrayDeque<>();deque2 = new ArrayDeque<>();}public void push(Integer n){if(deque2.isEmpty()){deque1.offer(n);}else {deque2.offer(n);}}public Integer pop(){if(deque1.isEmpty()&&deque2.isEmpty()){return null;}if(deque1.isEmpty()&&!deque2.isEmpty()){while (deque2.size()>0){deque1.add(deque2.poll());}}while (deque1.size()>1){deque2.add(deque1.poll());}return deque1.poll();}public boolean isEmpty(){if(deque1.isEmpty()&&deque2.isEmpty()){return true;}else{return false;}}}复制代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。