//使用通用类
//writed by swords 2005/3/15
#include<iostream.h>
const int SIZE=100;
template<class SType>
class stack
{
SType stck[SIZE];
int tos;
public:
stack(void);
~stack(void);
void push(SType i);
SType pop(void);
};
template<class SType>stack<SType>::stack()
{
tos=0;
cout<<"stack initialized."<<endl;
}
template<class SType>stack<SType>::~stack()
{
cout<<"stack destroyed."<<endl;
}
template<class SType>void stack<SType>::push(SType i)
{
if(tos==SIZE)
{
cout<<"stack is full."<<endl;
return;
}
stck[tos++]=i;
}
template<class SType>SType stack<SType>::pop(void)
{
if(tos==0)
{
cout<<"stack underflow."<<endl;
return 0;
}
return stck[--tos];
}
void main()
{
stack<int> a;
stack<double> b;
stack<char> c;
int i;
a.push(1);
a.push(2);
b.push(99.5);
b.push(-15);
cout<<a.pop()<<" "<<a.pop()<<" "<<b.pop()<<" "<<b.pop()<<endl;
for(i=0;i<10;i++)
c.push((char)'A'+i);
for(i=0;i<10;i++)
cout<<c.pop();
cout<<endl;
}