zoukankan      html  css  js  c++  java
  • 【栈】用一个栈实现对另一个栈的排序

    题目:

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

    题解:

    需要用到辅助栈。stack执行pop操作,弹出元素记为cur;

    如果cur小于或等于assist的栈顶元素,则将cur直接压入assist;

    如果cur大于assist的栈顶元素,则将assist的元素逐一弹出并压入stack,知道cur小于或等于assist的栈顶元素,再将cur压入assist

    执行上述操作后,直到stack空,将assist所有元素逐一压入stack

    Solution 1

    #include<iostream>
    #include<stack>
    using namespace std;
    
    void sortStack(stack<int> &s) {
        stack<int> assist;
        while (!s.empty()) {
            int cur = s.top();
            s.pop();
            while (!assist.empty() && assist.top() < cur) {
                s.push(assist.top());
                assist.pop();
            }
            assist.push(cur);
        }
        while (!assist.empty()) {
            s.push(assist.top());
            assist.pop();
        }
    }
    
    int main()
    {
        int n, num;
        cin >> n;
        stack<int> s;
        for (int i = 0; i < n; ++i) {
            cin >> num;
            s.push(num);
            cout << num << " ";
        }
        cout << endl;
        sortStack(s);
        while (!s.empty()) {
            cout << s.top() << " ";
            s.pop();
        }
        cout << endl;
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    RocketMQ主从搭建
    Spring Cloud Sleuth
    Spring Cloud Eureka
    Nacos配置中心使用
    Nacos注册中心使用
    Nacos快速入门
    Nginx配置SSL
    并发工具类
    关于类的线程安全
    Docker 入门学习笔记(一)
  • 原文地址:https://www.cnblogs.com/Atanisi/p/7507610.html
Copyright © 2011-2022 走看看