sort a stack
2010-10-03 21:55 wansishuang 阅读(220) 评论(0) 收藏 举报Given a stack S, write a C program to sort the stack (in ascending order).
You are not allowed to make any assumptions about how the stack is implemented; the only functions allowed to be used are: Push, Pop, Top, IsEmpty, IsFull.
#include <stack>
#include <iostream>
using namespace std;
template<typename T>
void reverse(stack<T>&s)
{
    if(s.empty()) return;
    T top = s.top();
    s.pop();
    reverse(s);
    push(s, top);
}
template<typename T>
void push(stack<T> &s, int key)
{
    if(s.empty())
    {
        s.push(key);
        return;
    }
    int top = s.top();
    if(top < key)
    {
        s.push(key);
    }   
    else
    {
        s.pop();
        push(s, key);
        s.push(top);
    }
}
int main()
{
    stack<int> s;
    s.push(1);
    s.push(4);
    s.push(5);
    s.push(2);
    s.push(3);
    reverse(s);
    while(!s.empty())
    {
        cout<< s.top() << " ";
        s.pop();
    }
    cout<<endl;
    return 0;
}
 
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号