队列模拟栈,栈模拟队列,是常见的操作。下面直接给出代码。 import java.util.Queue; import java.util.concurrent.LinkedBlockingQueue; /** * Created by Liu on 2016/7/6. */ public class StackByQuene<E> { private Queue<E> pushQuene; private Queue<E> popQuene; public StackByQuene(){ pushQuene=new LinkedBlockingQueue<>(); popQuene=new LinkedBlockingQueue<>(); } public void push( E data){ pushQuene.add(data); } public E pop(){ if (pushQuene.size()==1) return pushQuene.poll(); else { while(pushQuene.size()!=1){ E data=pushQuene.poll(); popQuene.add(data); } } E result =pushQuene.poll(); while (!popQuene.isEmpty()){ pushQuene.add(popQuene.poll()); } return result; } public static void main(String[] args){ StackByQuene<Integer> stack =new StackByQuene(); stack.push(1); stack.push(2); stack.push(3); System.out.println(stack.pop()); stack.push(4); System.out.println(stack.pop()); System.out.println(stack.pop()); System.out.println(stack.pop()); } }
import java.util.Stack; /** * Created by Liu on 2016/7/6. */ public class QueneByStack<E> { private Stack<E> s1; private Stack<E> s2; public QueneByStack(){ s1=new Stack(); s2=new Stack(); } public void put(E data){ s1.push(data); } public E pop(){ if (s2.isEmpty()){ while (!s1.empty()){ s2.push(s1.pop()); } } return s2.pop(); } public boolean empty(){ return s1.isEmpty()&&s2.isEmpty(); } public static void main(String[] args){ QueneByStack<Integer> quene =new QueneByStack<>(); quene.put(1); quene.put(2); quene.put(3); while (!quene.empty()) System.out.println(quene.pop()); } }