#include<iostream>
#include<stack>
using namespace std;
template<class T>
class Stack
{
T* elements;
int topPtr;
int maxsize;
public:
Stack(int size = 50);
~Stack(){ delete[]elements; }
void push(const T&x);
void pop();
T top();
int size();
bool empty();
};
template<class T>
Stack<T>::Stack(int size)
{
maxsize = size;
topPtr = -1;
elements = new T[maxsize];
}
template<class T>
void Stack<T>::push(const T& x)
{
if (size() == maxsize)
{
cout << "栈满" << endl;
return;
}
else
{
elements[++topPtr] = x;
}
}
template<class T>
void Stack<T>::pop()
{
if (empty())
cout << "栈空" << endl;
else
topPtr--;
}
template<class T>
T Stack<T>::top()
{
if (empty())
cout << "栈空" << endl;
else
return elements[topPtr];
}
template<class T>
int Stack<T>::size()
{
return topPtr + 1;
}
template<class T>
bool Stack<T>::empty()
{
if (topPtr == -1)
return true;
else
return false;
}
int main()
{
Stack<int>c;
}