栈和队列----用一个栈实现另一个栈的排序

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

  

  一个栈中元素的类型为整型,现在想将该栈从顶到底按照从大到小的顺序排序,只允许申请一个栈,除此之外,可以申请新的变量,但是不能申请额外的数据结构,如何完成排序?

package com.test;

import java.util.Stack;

/**
 * Created by Demrystv.
 *
 * 思路:
 * 由题意得,辅助栈必须从栈顶到栈底由小到大
 * 首先拿到原来栈的第一个元素,如果辅助栈的栈顶元素小于它,则将辅助栈中的元素逐一弹回到原来栈中
 * 直到辅助栈的栈顶元素大于等于它,然后再将刚刚拿到的元素放到辅助栈中
 * 如果一开始拿到的原来栈的第一个元素,辅助栈的栈顶元素大于等于它,直接将拿到的元素放到辅助栈中
 */
public class SortSackByAnother {
    public void sortStackByAnother(Stack<Integer> stack){
        Stack<Integer> help = new Stack<>();
        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());
        }
    }
}
原文地址:https://www.cnblogs.com/Demrystv/p/9286545.html