程序员代码面试指南--用一个栈实现另一个栈的排序
2018-02-07 14:24
711 查看
/** 用一个栈实现另一个栈的排序 【题目】 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小 的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不 能申请额外的数据结构。如何完成排序? */ /* 将要排序的栈记为stack,申请的辅助栈记为help。在stack上执 行pop操作,弹出的元素记为cur。 -如果cur小于或等于help的栈顶元素,则将cur直接压入help; -如果cur大于help的栈顶元素,则将help的元素逐一弹出,逐一 压入stack,直到cur小于或等于help的栈顶元素,再将cur压入help。 一直执行以上操作,直到stack中的全部元素都压入到help。最后 将help中的所有元素逐一压入stack,即完成排序。 */ import java.util.Stack; public class C05_StackSortStack { public static void main(String[] args) { Stack<Integer>stack = new Stack<Integer>(); stack.add(2); stack.add(1); stack.add(6); stack.add(0); stack.add(5); sortStack(stack); while(!stack.empty()){ System.out.println(stack.pop()); } } //栈从顶到底按从大到小的顺序排序 public static void sortStack(Stack<Integer>stack){ Stack<Integer>help = new Stack<Integer>(); while(!stack.empty()){ int cur = stack.pop(); while(!help.empty() && cur>help.peek()){//得到的help栈是顶到底按从小到大的顺序排序 stack.push(help.pop()); } help.push(cur); } //最后将help栈的元素全部倒回stack while(!help.empty()){ stack.push(help.pop()); } } }
相关文章推荐
- 程序员代码面试指南:IT名企算法与数据结构题目最优解-字符串问题:C/C++语言实现
- 左程云代码面试指南:仅使用递归函数和栈实现一个逆序栈
- 程序员面试指南之用一个栈实现另一个栈的排序
- 程序员代码面试指南--如何仅用递归函数和栈操作逆序一个栈
- 设计一个有getMin功能的栈 程序员代码面试指南
- 程序员代码面试指南--设计一个具有getMin功能的栈
- MySql中把一个表的数据插入到另一个表中的实现代码
- MySql中把一个表的数据插入到另一个表中的实现代码
- <笔试><面试>编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。
- 一个特殊的排序需求的javascript实现代码
- <笔试><面试>编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。
- 相邻div实现一个跟着另一个自适应高度示例代码
- checkbox 选中一个另一个checkbox也会选中的实现代码
- 利用Java代码实现把一个文件从一个地方剪切到另一个地方
- 数据结构5 用一个栈实现另一个栈的排序
- 程序员代码面试指南:IT名企算法与数据结构题目最优解(题目)
- MySql中把一个表的数据插入到另一个表中的实现代码
- 相邻div实现一个跟着另一个自适应高度示例代码
- MySql中把一个表的数据插入到另一个表中的实现代码--转
- 栈和队列之用一个栈实现另一个栈的排序