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

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

// 用一个栈实现另一个栈的排序
void sortStackByStack(stack<int>& s) {
    if (s.empty()) {
        return ;
    }
    stack<int> tmp;
    while (!s.empty()) {
        int top = s.top();
        s.pop();
        while (!tmp.empty() && top > tmp.top()) {
            s.push(tmp.top());
            tmp.pop();
        }
        tmp.push(top);
    }

    while (!tmp.empty()) {
        s.push(tmp.top());
        tmp.pop();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容