程序员面试指南之用一个栈实现另一个栈的排序
2016-10-15 17:20
253 查看
题目描述:
解题思路:
假设要排序的栈是sortStack,我们定义一个helpStack。如果sortStack不为空,就pop出栈顶元素value并与helpStack的栈顶元素比较,当helpStack不为空且value比较大时就将helpStack中的元素弹出并压入sortStack中,直到value比较小或相等时才将sortStack中的元素push进helpStack。因为栈的特性是先进后出的,循环此过程,那么helpStack中的元素从栈顶到栈底就是从大到小排序的,这时再将helpStack中的元素push进sortStack就行了。题解:
public void sortStackByStack(Stack<Integer> sortStack){ Stack<Integer> helpStack = new Stack<>(); int value = sortStack.pop(); while(! sortStack.isEmpty()){ while(! helpStack.isEmpty() && value > helpStack.peek()){ sortStack.push(helpStack.pop()); } helpStack.push(value); } while(! helpStack.isEmpty()){ sortStack.push(helpStack.pop()); } }
相关文章推荐
- 程序员代码面试指南--用一个栈实现另一个栈的排序
- 数据结构5 用一个栈实现另一个栈的排序
- 【栈】用一个栈来实现另一个栈的排序
- 栈和队列---用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序(java实现)
- 用一个栈实现另一个栈的排序
- 栈和队列之用一个栈实现另一个栈的排序
- 栈和队列(5)——用一个栈实现对另一个栈的排序
- C++ 使用一个栈实现另一个栈的排序
- 1栈和队列--用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈来实现另一个栈的排序
- 004使用一个栈对另一个栈完成排序(C++实现)
- 用一个栈实现另一个栈的排序
- 用一个栈实现对另一个栈的排序
- 用一个栈实现另一个栈的排序
- 左神的书——《程序员代码面试指南》之用一个栈实现另一个栈的排序c++实现
- 1_5用一个栈实现另一个栈的排序
- 编写一个多线程函数实现对数组排序,要求: 1.至少用两个线程 2.数组的元素值可以事先定义好,或者可以从键盘输入(增加一个线程)。 3.用一个线程对数组排序,用另一个线程输出排序结果。 4.保证先排好序,再输出。
- 用一个栈实现另一个栈的排序