// lists.cpp #include #include #include "utility.h" #include "lists.h" using namespace std; link::link(useful * u, link * n) { data = u; next = n; } list::list() { first = NULL; } list::~list() { while (first != NULL) { link * n = first->next; delete first; first = n; } } void list::push(useful * u) { first = new link(u, first); } useful * list::pop() { if (first == NULL) return NULL; useful * u = first->data; link * n = first->next; delete first; first = n; return u; } void list::print(ostream & out) const { if (first == NULL) { out << "[]"; return; } out << "[" << * first->data; link * p = first->next; while (p != NULL) { out << ", " << * p->data; p = p->next; } out << "]"; } ostream & operator<<(ostream & out, const list & l) { l.print(out); return out; }