// Implementation of vector-implemented List Class #include #include "List.h" using namespace std; template List::List() {} // No constructor necessary. Vector starts empty // Start from scratch template void List::init() {theList.clear();} template void List::insertAtHead(const listEltType &elt) {listIterator it=theList.begin(); theList.insert(it,elt); // easier: theList.insert(theList.begin(),elt); } template void List::insertInOrder(const listEltType &elt) {listIterator it; for (it=theList.begin();it!=theList.end() && *it void List::removeHead() {theList.erase(theList.begin()); } template void List::deleteInOrder(const listEltType &elt) {listIterator it; for (it=theList.begin();*it!=elt;it++);//assumes it will be found...crash if not theList.erase(it); } template bool List::search(const listEltType &elt) {listIterator it; for (it=theList.begin();it!=theList.end() && *it!=elt;it++); return(it!=theList.end()); } template listEltType &List::retrieve(const int &key) {// This function can be easily adapted to search in objects or structs for // a member that is an int } template int List::countNodes() {return(theList.size());} template ostream &operator<<(ostream &out,List aList) {for (List::listIterator it=aList.theList.begin(); it!=aList.theList.end();it++) out << *it; return(out); } ostream &operator<<(ostream &out,List aList) {for (vector::iterator it=aList.theList.begin();it!=aList.theList.end();it++) out << *it; return(out); } template class List;