使用两个栈实现队列功能
主要思想:
将元素分为两部分啊,b。a作为入栈,b作为出栈。
1、将所有元素入栈
2、当出栈为空时,将a中元素转移到b中。
代码
import java.util.Stack;public class MyQueue<T> {private Stack<T> stackIn = new Stack<T>(); //提供入栈private Stack<T> stackOut = new Stack<T>(); //提供出栈public void enQueue(T element){stackIn.push(element);}private void shift(){while(!stackIn.isEmpty()){stackOut.push(stackIn.pop());}}public T deQueue(){if(stackOut.isEmpty()) shift(); if(! stackOut.isEmpty()){ return stackOut.pop(); } else return null;}public static void main(String[] args){MyQueue myList = new MyQueue<String>();myList.enQueue("abc");myList.enQueue("def");myList.enQueue("r");myList.enQueue("s");myList.enQueue("t");myList.enQueue("u");System.out.print(myList.deQueue());System.out.print(myList.deQueue());System.out.print(myList.deQueue());System.out.print(myList.deQueue());myList.enQueue("y");myList.enQueue("hjj");System.out.print(myList.deQueue());}}