//list.inl //methods for class List template #include #include template List::List () { head = 0; } template Node *List::firstnode() { return head; } template void List::insertfront(Type x) { Node *p; p = new Node (x, head); assert(p); head = p; } template void List::insertend(Type x) { Node *p, *q; p = new Node (x); assert(p); q = findlast(); if (!q) head = p; else q->setnext(p); } template void List::insertafter(Type x, Node *p) { Node *q; assert (p); q = new Node (x); assert (q); q->setnext(p->getnext()); p->setnext(q); } template Type List::removefront() { Node *p; Type x; assert(!isempty()); p = head; x = p->getinfo(); head = p->getnext(); delete p; return x; } template Type List::removeafter(Node *p) { Type x; Node *q; assert(p); q = p->getnext(); assert(q); x = q->getinfo(); p->setnext(q->getnext()); delete q; return x; } template Type List::removeend() { Node *p,*q; assert(!isempty()); p = head; q = NULL; while (p->getnext()){ q = p; p = p->getnext(); } if (!q) return(removefront()); else return(removeafter(q)); } template int List::isempty() { return (head == NULL); } template Node *List::findlast() { Node *p; if (isempty()) return NULL; p = head; while (p->getnext()) p = p->getnext(); return p; } template void List::print() { Node *p; p = head; while (p) { cout<getinfo()<<' '; p = p->getnext(); } cout< int List::find(Type x) { Node *p; p = head; while (p) { if (p->getinfo() == x) return 1; p = p->getnext(); } return 0; } template List::~List() { Node *p, *q; p = head; while (p) { q = p; p = p->getnext(); delete q; } head = 0; }