/* * A generic template list class. * Fairly typical of the list example you would * find in any c++ book. */ #ifndef GENERIC_LIST_H #define GENERIC_LIST_H #include #include template class List { public: List(int s=0); ~List(); void allocate(int s); void SetSize(int s); void Pack(); void Add(Type); void AddUnique(Type); int Contains(Type); void Remove(Type); void DelIndex(int i); Type * element; int num; int array_size; Type &operator[](int i){assert(i>=0 && i List::List(int s){ num=0; array_size = 0; element = NULL; if(s) { allocate(s); } } template List::~List(){ delete element; } template void List::allocate(int s){ assert(s>0); assert(s>=num); Type *old = element; array_size =s; element = new Type[array_size]; assert(element); for(int i=0;i void List::SetSize(int s){ if(s==0) { if(element) delete element;} else { allocate(s); } num=s; } template void List::Pack(){ allocate(num); } template void List::Add(Type t){ assert(num<=array_size); if(num==array_size) { allocate((array_size)?array_size *2:16); } //int i; //for(i=0;i int List::Contains(Type t){ int i; int count=0; for(i=0;i void List::AddUnique(Type t){ if(!Contains(t)) Add(t); } template void List::DelIndex(int i){ assert(i void List::Remove(Type t){ int i; for(i=0;i