#define max_list 10 template<class List_entry> class List{ public: List(); int size() const; bool full() const; bool empty() const; void clear(); void traverse(void (*visit) (List_entry &)); Error_code retrieve (int position,List_entry &x) const; Error_code replace(int position,const List_entry &x); Error_code remove (int position,List_entry &x); Error_code insert (int position,conse List_entry &x); protected: int count; List_entry entry[max_list]; }; template<class List_entry> int List<List_entry>::size() const { return count; } template<class List_entry> Error_code List<List_entry>::insert(int position,const List_entry &x) { if(full()) return overflow; if(position<0 || position>count) return range_error; for(int i=count-1;i>=position;i--) entry[i+1]=entry[i]; entry[position]=x; count++; return success; } template<class List_entry> void List<List_entry>::traverse(void (*visit) (List_entry &)) { for(int i=0;i<count;i++) (*visit) (entry[i]); }