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;
    }
  • 相关阅读:
    webpack--前端自动化工具
    Vue--入门篇
    集千篇理论,终得深拷贝与浅拷贝的初解
    事件循环--eventloop
    对象的属性(变量+对象)
    集千篇理论精华,感悟对同步和异步的理解
    vue--先决篇
    js的基本语法规范
    python 模块加载错误总结
    Python logging模块无法正常输出日志
  • 原文地址:https://www.cnblogs.com/Atanisi/p/7507610.html
Copyright © 2011-2022 走看看