sort a stack
2010-10-03 21:55 wansishuang 阅读(221) 评论(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号