/**
* 功能:用两个栈来实现一个队列。
*/
import java.util.*;
/**
* 思路:需要修改peek()和pop(),以相反顺序执行操作。可以利用第二个栈来反转元素的次序。
* stackNewest顶端为最新元素,stackOldest顶端为最旧元素,利用两个栈的元素的转移来实现。
*
*/
public class MyQuene1 {
Stack stackNewest ,stackOldest ;
public MyQuene1(){
stackNewest= new Stack();
stackOldest= new Stack();
}
public int size(){
return stackNewest.size()+ stackOldest.size();
}
public void add(Object value){
stackNewest.push(value);
}
//返回最旧元素
public Object peek(){
this.shiftStack();
return stackOldest.peek();
}
//删除最旧元素
public Object remove(){
this.shiftStack();
return stackOldest.pop();
}
public void shiftStack(){
if( stackOldest.isEmpty())
while(! stackNewest.isEmpty())
stackOldest.push(stackNewest.pop());
}
}