栈与队列4——用一个栈实现另一个栈的排序

题目

一个栈A的元素类型为整形,仅使用一个栈B,来实现栈A从栈顶到栈底元素是从大到小的顺序。


思路

  1. 原来的栈为stack,申请的栈为help,当前stack的栈顶元素记为cur
  2. 如果cur小于help栈顶元素,则压入
  3. 如果cur大于help栈顶元素,需要将help栈顶元素弹出压入stack中,直到cur小于为止
  4. 执行以上操作知道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());
	}

}
发布了43 篇原创文章 · 获赞 21 · 访问量 4934

猜你喜欢

转载自blog.csdn.net/flying_1314/article/details/103743587
今日推荐