Q 1개를 main으로 하고, 임시 Q 하나를 더 이용해서
stack을 구현. 항상 Q를 다 비우고 꺼꾸로 즉(stack pop 대비순서)로 넣어 놓음.
Queue<Integer> q = new LinkedList<Integer>();
Queue<Integer> tmp = new LinkedList<Integer>();
public void push(int d) {
if (q.size() == 0) {
q.add(d);
}else {
//deque q->tmp
while (q.size() > 0) {
tmp.add( q.poll() );
}
q.add(d);
//tmp->q
while (tmp.size() > 0 ){
q.add(tmp.poll());
}
}
}
public Integer pop(){
return q.poll(); //poll returns null, while remove throws exception.
}