栈和队列(5)——用一个栈实现对另一个栈的排序
2016-09-28 20:52
281 查看
要求:
一个栈的元素为整型,现在想将该栈的从栈顶到底按从小到大的顺序排序,只许申请一个栈。
思考:
将要排序的栈记为stack,申请辅助的栈记为help,在stack栈执行pop操作,弹出的元素记为cur,如果cur大于help的栈顶元素,则将cur压入help;如果cur小于help的栈顶元素,则弹出help栈顶元素压入stack直到cur的值大于等于help的栈顶元素。依次运行,直到stack为空之后,把help的栈元素依次压入stack栈里即可。
实现代码:
一个栈的元素为整型,现在想将该栈的从栈顶到底按从小到大的顺序排序,只许申请一个栈。
思考:
将要排序的栈记为stack,申请辅助的栈记为help,在stack栈执行pop操作,弹出的元素记为cur,如果cur大于help的栈顶元素,则将cur压入help;如果cur小于help的栈顶元素,则弹出help栈顶元素压入stack直到cur的值大于等于help的栈顶元素。依次运行,直到stack为空之后,把help的栈元素依次压入stack栈里即可。
实现代码:
package algorithm_5; import java.util.Stack; public class algorithm_5 { public static void sortStackByStack(Stack<Integer> stack) { Stack<Integer> help = new Stack<Integer>(); while(!stack.isEmpty()){ int cur = stack.pop(); while(!help.isEmpty() && help.peek()< cur){ stack.push(help.pop()); } help.push(cur); } while (!help.isEmpty()){ stack.push(help.pop()); } } public static void main(String[] args) { Stack<Integer> s ; s = new Stack<Integer>(); s.push(1); s.push(5); s.push(3); s.push(4); s.push(2); sortStackByStack(s); while(!s.isEmpty()){ System.out.println(s.pop()); } } }实验结果:
相关文章推荐
- 栈和队列之用一个栈实现另一个栈的排序
- 栈和队列---用一个栈实现另一个栈的排序
- 栈和队列——用一个栈实现另一个栈的排序
- 1栈和队列--用一个栈实现另一个栈的排序
- 编写一个多线程函数实现对数组排序,要求: 1.至少用两个线程 2.数组的元素值可以事先定义好,或者可以从键盘输入(增加一个线程)。 3.用一个线程对数组排序,用另一个线程输出排序结果。 4.保证先排好序,再输出。
- 【栈】用一个栈来实现另一个栈的排序
- 程序员代码面试指南--用一个栈实现另一个栈的排序
- 用一个辅助栈,来实现另一个栈的排序
- 数据结构5 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 程序员面试指南之用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈来实现另一个栈的排序
- 消息队列实现从一个进程向另一个进程发送一个数据块的方法
- 004使用一个栈对另一个栈完成排序(C++实现)
- 用一个栈实现对另一个栈的排序
- 用一个栈实现另一个栈的排序(java实现)
- 用一个栈实现另一个栈的排序(每日一道算法题)