您的位置:首页 > 职场人生

程序员面试指南之用一个栈实现另一个栈的排序

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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: