Microsoft Interview Question
SDE1sCountry: United States
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
public class QueueStack<T> {
Queue<T> queue1 = new ConcurrentLinkedQueue<T>();
Queue<T> queue2 = new ConcurrentLinkedQueue<T>();
public void push(T elem){
queue1.offer(elem);
}
public T pop(){
if(!queue1.isEmpty()){
while(queue1.size()>1){
queue2.offer(queue1.poll());
}
return queue1.poll();
}else if(!queue2.isEmpty()){
while(queue2.size()>1){
queue1.offer(queue2.poll());
}
return queue2.poll();
}else{
return null;
}
}
public T peek(){
if(!queue1.isEmpty()){
while(queue1.size()>1){
queue2.offer(queue1.poll());
}
return queue1.peek();
}else if(!queue2.isEmpty()){
while(queue2.size()>1){
queue1.offer(queue2.poll());
}
T desiredelem = queue2.poll();
queue1.offer(desiredelem);
return desiredelem;
}else{
return null;
}
}
public static void main(String[] args){
QueueStack<Integer> testStack = new QueueStack<Integer>();
testStack.push(1);
testStack.push(2);
testStack.push(3);
System.out.println(testStack.pop());
System.out.println(testStack.pop());
System.out.println(testStack.pop());
}
}
- glebstepanov1992 January 17, 2014