题目
一个栈A的元素类型为整形,仅使用一个栈B,来实现栈A从栈顶到栈底元素是从大到小的顺序。
思路
- 原来的栈为stack,申请的栈为help,当前stack的栈顶元素记为cur
- 如果cur小于help栈顶元素,则压入
- 如果cur大于help栈顶元素,需要将help栈顶元素弹出压入stack中,直到cur小于为止
- 执行以上操作知道stack为空,元素全部压入help为止。最后将help中的所有元素逐一压入stack,完成排序
源码
public static void sortStack(Stack<Integer> stack){
Stack<Integer> help=new Stack<Integer>();
while(!stack.empty()){
int cur=stack.pop();
while(!help.empty()&&help.peek<cur){
stack.push(help.pop());
}
help.push(cur);
}
while(!help.empty()){
stack.push(help.pop());
}
}