用一个栈实现另一个栈的排序

Posted 澄海乌鸦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用一个栈实现另一个栈的排序相关的知识,希望对你有一定的参考价值。

要求:使用一个辅助栈实现栈的排序

 

思路:

要排序的栈为stack,辅助栈为help

stack弹出一个元素cur,判断cur与help栈顶元素的大小,若小于或等于,则直接压入help,

否则,将help中小于cur的元素一次压入stack,之后将cur压入help,

重复上面的过程,直到stack为空。

 

具体代码如下:

public class pro5_sortStackByStack {
    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()) ;
        }
    }
}

 

以上是关于用一个栈实现另一个栈的排序的主要内容,如果未能解决你的问题,请参考以下文章

用一个栈实现另一个栈的排序

用一个栈实现另一个栈的排序

用一个栈实现另一个栈的排序

用一个栈实现对另一个栈的排序

算法总结之 用一个栈实现另一个栈的排序

用一个栈实现另一个栈的排序