题目就是栈中存的整数,对其做一个排序。哎当时没写出来。。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import java.util.Stack; public class 栈排序 { public static void main(String[] args) { Stack<Integer> s = new Stack<Integer>(); s.push( 4 ); s.push( 6 ); s.push( 1 ); s.push( 3 ); s.push( 2 ); // while(!s.isEmpty()){ // System.out.println("排序前"); // System.out.println(s.pop()); // } s = sort(s); while (!s.isEmpty()){ //System.out.println("排序后"); System.out.println(s.pop()); } } public static Stack<Integer> sort(Stack<Integer> s){ Stack<Integer> ret = new Stack<Integer>(); while (!s.isEmpty()){ int top = s.pop(); while (!ret.isEmpty() && ret.peek() < top){ s.push(ret.pop()); } ret.push(top); } return ret; } } |
当辅助栈栈顶小于原栈栈顶时,把辅助栈元素一次弹回原栈直到辅助栈栈顶大于那个栈顶元素。