静态数组栈模板(c++)
#ifndef STACK_H
#define STACK_H
#include <cassert>
template <class T,int size=50>
class Stack
{
private:
int top;
T list[size];
public:
Stack();
void push(T& data);
T pop();
int isEmpty() const;
int isFull() const;
const T& peek() const;
void clear();
};
template <class T,int size>
Stack<T,size>::Stack()
{
top=-1;
}
template <class T,int size>
void Stack<T,size>::push(T& data)
{
assert(!isFull());
list[++top]=data;
}
template <class T,int size>
T Stack<T,size>::pop()
{
assert(!isEmpty());
return list[top--];
}
template <class T,int size>
int Stack<T,size>::isEmpty() const
{
return top==-1;
}
template <class T,int size>
int Stack<T,size>::isFull() const
{
return top==size;
}
template <class T,int size>
const T& Stack<T,size>::peek() const
{
return list[top];
}
template <class T,int size>
void Stack<T,size>::clear()
{
top=-1;
}
#endif