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

2018-10-15  本文已影响10人  编程半岛

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

// 用一个栈实现另一个栈的排序
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();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读