#include #include #include "stacker.h" using namespace std; Stack::Stack(displayFunc *dispfn) { this->dispfn = dispfn; head = NULL; } void Stack::push (void *object) { if (object == NULL) return; head = new Node(object, head); } void *Stack::pop() { if (head == NULL) return NULL; Node *ptr = head; void *object = head->object; head = head->next; delete ptr; return object; } void *Stack::peek() { if (head == NULL) return NULL; return head->object; } void Stack::display() { if (head == NULL) { cout << "(empty)\n"; return; } for (Node *ptr=head ; ptr != NULL ; ptr=ptr->next) dispfn->display(ptr->object); cout << "\n"; } bool Stack::empty() { return head == NULL; } ostream & operator << (ostream & out, Stack & stack) { stack.display(); return out; } ostream & operator << (ostream & out, Stack * stack) { stack->display(); return out; }