3.6-栈内部排序

来源:互联网 发布:农业银行软件官方下载 编辑:程序博客网 时间:2024/06/05 02:45

Write a program to sort a stack in ascending order. You should not make any assumptions about how the stack is implemented. The following are the only functions that should be used to write this program: push | pop | peek | isEmpty.

感觉用堆来做会比较简单。但是书上的意思是用另外一个栈来实现。

从原始栈pop出来的value需要和新的栈顶去比较,如果大的话就直接push,小的话就要将new_stk比他大的全部pop出来并push回原始栈。

#include <iostream>#include <stack>using namespace std;stack<int> stack_sort(stack<int> origin_stk){    stack<int> new_stk;    while(!origin_stk.empty())    {        int temp = origin_stk.top();        origin_stk.pop();        while(!new_stk.empty()&& new_stk.top()>temp)        {            origin_stk.push(new_stk.top());            new_stk.pop();        }        new_stk.push(temp);    }    return new_stk;}int main(){    stack<int> origin_stk;    origin_stk.push(2);    origin_stk.push(3);    origin_stk.push(1);    origin_stk.push(4);    stack<int> new_stk = stack_sort(origin_stk);    while(!new_stk.empty())    {        cout << new_stk.top() << endl;        new_stk.pop();    }    return 0;}


0 0
原创粉丝点击