/* * FILE: list.h - List ADT template class definition * Uses linked-list representation * */ #ifndef __LIST #define __LIST #include #include using namespace std; template class list; template class node { public: item value(); private: node( const item&, node* ); item data; node* link; friend class list; }; template class list { public: list(); ~list(); void insertFirst( const item& ); void insertLast( const item& ); void insertBefore( const item& ); void insertAfter( const item& ); void removeFirst(); void removeLast(); void removeCurrent(); item firstValue(); item lastValue(); item currentValue(); int size(); void start(); int more(); void advance(); virtual void print(); protected: node* first; node* last; node* curr; node* prev; int count; }; #endif