Write a method duplicateStack that returns a new stack conta
Write a method duplicateStack that returns a new stack containing the same elements and in the same order as the stack specified in the parameter. The method should create a new stack and fill it with the same data elements as the given stack. (You do not need to duplicate the contents of the elements.) Before the method finishes, it must restore the contents of the original stack to its original state (same contents in the same order). Besides the new stack that the method returns, the only additional data structure that it can use is a single queue. The method may also use O(1) additional space. JAVA
Solution
public static Stack duplicateStack(Stack oldStack){
ArrayList q = new ArrayList();
Stack toReturn = new Stack();
while(!oldStack.empty()){
int top = (int) oldStack.pop();
q.add(top);
}
while(q.size() > 0){
oldStack.push(q.get(0));
q.remove(0);
}
while(!oldStack.empty()){
int top = (int) oldStack.pop();
q.add(top);
}
while(q.size() > 0){
oldStack.push(q.get(0));
toReturn.push(q.get(0));
q.remove(0);
}
return toReturn;
}
