解题思路:
循环遍历要排序的栈,第一次遍历时直接把数据放入栈2中,在下次遍历时,比较栈1出栈的数据与栈2数据的大小,如果栈2数据大于要压入的数时,进行出栈压入栈1中,直到数据比要压入数小,同时记录栈2出栈次数j,然后压入数据,再把压入栈1的数据重新压回到栈2中。
public static Stack<Integer> sortBy2Stack(Stack<Integer> stack){
int size=stack.size();
Stack<Integer> tempStack=new Stack();//结果栈
int temp;
int j=0;
while(stack.size()>0){
temp=stack.pop();
if(tempStack.size()!=0){//判断结果栈是否为空
while (tempStack.size()>0&&tempStack.peek()>temp){
stack.push(tempStack.pop());
j++;//记录出栈次数
}
tempStack.push(temp);
while(j>0){
tempStack.push(stack.pop());
j--;//根据出栈次数重新压栈
}
}else{
tempStack.push(temp);
}
}
return tempStack;
}