rendered paste body//stack.h
template <class nodeT>
class Node
{
public:
Node(nodeT data, Node<nodeT>* next);
nodeT getData() const;
Node<nodeT>* NextNode;
private:
nodeT NodeData;
};
template <class stackT>
class Stack
{
public:
Stack ();
bool isEmpty();
bool push(stackT data);
stackT pop();
private:
Node<stackT>* HeadNode;
};
//stack.cpp
#include <iostream>
#include "stack.h"
template <class nodeT>
Node<nodeT>::Node(nodeT data, Node<nodeT>* next)
{
NodeData = data;
NextNode = next;
}
template <class nodeT>
nodeT Node<nodeT>::getData() const
{
return NodeData;
}
template <class stackT>
Stack<stackT>::Stack()
{
HeadNode = NULL;
}
template <class stackT>
bool Stack<stackT>::isEmpty(){
return (HeadNode == NULL) ? true : false;
}
template <class stackT>
bool Stack<stackT>::push(stackT data){
HeadNode = new Node<stackT>(data, HeadNode);
return true;
}
template <class stackT>
stackT Stack<stackT>::pop(){
Node<stackT>* returnNode = HeadNode;
stackT returnData = HeadNode->getData();
HeadNode = HeadNode->NextNode;
delete returnNode;
return returnData;
}
//test.cpp
#include <iostream>
#include "stack.h"
int main()
{
using std::cout;
using std::endl;
cout << "Initializing" << endl;
Stack<float> testS;
testS.push(6);
cout << testS.pop();
cout << endl;
}