用一个栈实现另一个栈的排序
来源:互联网 发布:淘宝网的商业模型 编辑:程序博客网 时间:2024/04/25 19:41
问题描述:一个栈中元素的类型为整数,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?
思路:将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur
(1)如果cur小于或等于help的栈顶元素,则将cur直接压入help
(2)如果cur大于help的栈顶元素,则将help的元素逐一弹出,逐一压入stack,直到cur小于或等于help的栈顶元素,再将cur压入help
package QuestionTest;import java.util.Stack;/** * Created by L_kanglin on 2017/3/15. */public class Test3 { public static void main(String[] args){ int [] aa={3,5,1,2,4}; Stack<Integer> stack=new Stack<>(); for(int i=0;i<aa.length;i++){ stack.push(aa[i]); } sortStackByStack(stack); while(!stack.isEmpty()){ System.out.print(" "+stack.pop()); } } public static void sortStackByStack(Stack<Integer> stack){ Stack<Integer> help = new Stack<Integer>(); while(!stack.isEmpty()){ while(!help.isEmpty()&&help.peek()>cur){ stack.push(help.pop()); } help.push(cur); } //此时help中保存的就是从栈顶到底是从小到大,全部push到stack中即可 while(!help.isEmpty()){ stack.push(help.pop()); } }}
运行结果如下:
1 2 3 4 5
0 0
- 【栈】用一个栈来实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 数据结构5 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈来实现另一个栈的排序
- 1_5用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- C++ 使用一个栈实现另一个栈的排序
- 栈和队列之用一个栈实现另一个栈的排序
- 栈和队列(5)——用一个栈实现对另一个栈的排序
- 1栈和队列--用一个栈实现另一个栈的排序
- 栈和队列——用一个栈实现另一个栈的排序
- 栈和队列 用一个栈实现另一个栈的排序
- 栈和队列---用一个栈实现另一个栈的排序
- 【整理】C++ getline()函数
- POJ 1742 多重背包问题
- Linux下设置Tomcat开机自动启动
- gstreamer学习笔记(1): 调试相关
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
- 用一个栈实现另一个栈的排序
- 技术大牛养成指南,一篇不鸡汤的成功学实践
- HDU1312
- php生成数据字典
- NIM游戏&SG函数
- Android调用系统照相机和摄像机
- 2D激光SLAM算法比较+cartographer
- 一个有趣的迷宫题
- Jenkins自动打包 配置mac slave节点