zoukankan      html  css  js  c++  java
  • 栈和队列----用一个栈实现另一个栈的排序

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

      

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

    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());
            }
        }
    }
  • 相关阅读:
    jvm类加载机制
    线程误区-join,wait(里边还是调用的wait)
    线程间通信wait和notify【All】简介
    指令重排序
    window.opener
    scrollIntoView()
    保持饥饿,保持愚蠢
    执行sql语句,不依靠实体 获取string值
    join函数详解
    html常用代码大全
  • 原文地址:https://www.cnblogs.com/Demrystv/p/9286545.html
Copyright © 2011-2022 走看看