#include <stdio.h>
#include "TemplateStack.h"
template<class T>
Stack<T>::Stack()
{
head = NULL;
}
template<class T>
Stack<T>::~Stack()
{
head = NULL;
}
template <class T>
void
Stack<T>::Push(T x)
{
head = new StackElem<T>(x, head);
}
template <class T>
T
Stack<T>::Pop()
{
T value = head->data;
StackElem<T> *tmp = head;
head = head->next;
delete tmp;
return value;
}