两个队列实现一个栈
作者:互联网
package Queue;
import java.util.LinkedList;
public class TwoQueueMakeStack {
/**
* 两个队列实现一个栈
* 两个队列中至多只有一个队列中有元素
* 添加元素就是:如果两个队列都没有元素,就将元素添加到队列1中,否则如果哪个队列有元素,就将元素添加到该队列中。
* 删除元素的话比较麻烦,就是先把一个队列中元素全部放到另外一个队列中,只剩下一个元素,这个元素就是要返回的元素
*
*/
public static LinkedList<Integer> queue1 = new LinkedList<>();
public static LinkedList<Integer> queue2 = new LinkedList<>();
public static void push(Integer i){
if(queue1.isEmpty() && queue2.isEmpty()){
queue1.addFirst(i);
}
if(!queue1.isEmpty()){
queue1.addFirst(i);
}else{
queue2.addFirst(i);
}
}
public static Integer pop(){
if(queue1.isEmpty() && queue2.isEmpty()){
throw new RuntimeException("栈中无元素");
}
if(!queue1.isEmpty()){
while(queue1.size() > 1){
queue2.addFirst(queue1.removeLast());
}
return queue1.removeLast();
}else{
while(queue2.size() > 1){
queue1.addFirst(queue2.removeLast());
}
return queue2.removeLast();
}
}
public static void main(String[] args){
TwoQueueMakeStack stack = new TwoQueueMakeStack();
stack.push(1);
stack.push(2);
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
标签:元素,两个,queue1,队列,queue2,实现,isEmpty,public 来源: https://blog.csdn.net/shen19960603/article/details/100991669