通过辅助栈实现排序已知栈
思想如下:
- 如果辅助栈为空,就直接从原栈中弹出数,压入辅助栈
- 如果辅助栈不为空,则比较辅助栈栈顶与原栈栈顶的大小
- 如果辅助栈栈顶大或等于,则直接将原栈栈顶出栈,压入辅助栈中
- 如果原栈栈顶大,则将原栈栈顶出栈,然后将辅助栈的栈顶弹出并压入原站,并比较辅助栈新的栈顶与原栈已出栈元素的大小,循环执行,直至辅助栈栈顶比该元素大或等于
代码实现如下:
package com.lilydedbb;
import java.util.Stack;
/**
* Created by dbb on 2016/12/23.
*/
public class SortStackByStack {
public static void sortStackByStack(Stack<Integer> stack){
Stack<Integer> help = new Stack<Integer>();
while (!stack.isEmpty()){
int pop = stack.pop();
while (!help.isEmpty() && pop > help.peek()){
stack.push(help.pop());
}
help.push(pop);
}
while (!help.isEmpty())
stack.push(help.pop());
}
}