C++ Integer Stack Class
#ifndef _intstack_h_ #define _intstack_h_ #include <cstddef> // Implements a stack of integers. class IntStack { private: // Stack node type. struct StackNode { StackNode(int d, StackNode *n) { data = d; next = n; } int data; StackNode *next; }; // Head of the stack StackNode *head; // This forbids copying and assigning stacks. IntStack(const IntStack &) = delete; IntStack & operator = (const IntStack &) = delete; public: // Must make sure stack is empty at construct. IntStack() { head = NULL; } // Make sure the stack is cleaned up at exit. ~IntStack() { clear(); } // Push onto the stack. void push(int i) { head = new StackNode(i, head); } // Remove from the stack. int pop(); // Find out what's on the top. int top() const { if(head == NULL) return 0; else return head->data; } // So, are we empty yet? bool isEmpty() const { return head == NULL; } // Remove all memory from the stack. void clear(); }; #endif