#ifndef _STACK_H_
#define _STACK_H_
template <typename T>
class Stack
{
public:
Stack(int maxSize);
~Stack();
void Push(const T& t);
void Pop();
T& Top() const;
bool Empty() const;
private:
T *s_;
int top_;
int maxSize_;
};
template <typename T>
Stack<T>::Stack(int maxSize) : maxSize_(maxSize), top_(-1)
{
s_ = new T[maxSize];
}
template <typename T>
Stack<T>::~Stack()
{
delete [] s_;
}
template <typename T>
void Stack<T>::Push(const T& t)
{
if(top_ == maxSize_ - 1)
{
throw(1);
}
s_[++top_] = t;
}
template <typename T>
void Stack<T>::Pop()
{
if(top_ + 1 == 0)
{
throw(2);
}
top_--;
}
template <typename T>
T& Stack<T>::Top() const
{
if(top_ + 1 == 0)
{
throw(2);
}
return s_[top_];
}
template <typename T>
bool Stack<T>::Empty() const
{
return top_ + 1 == 0;
}
#endif
类模板实现栈
最新推荐文章于 2023-01-02 10:38:31 发布