class DOUBLE_LIST_CORE{
friend class DOUBLE_CELL_CORE;
friend istream& operator>>(istream& in,DOUBLE_LIST_CORE& A)
{A.grab(in); return(in);};
friend istream& operator>>(istream& in,DOUBLE_LIST_CORE* A)
{A->grab(in); return(in);};
friend ostream& operator<<(ostream& out,const DOUBLE_LIST_CORE& A)
{A.print(out); return(out);};
friend ostream& operator<<(ostream& out,const DOUBLE_LIST_CORE* A)
{A->print(out); return(out);};
public:
virtual int is_empty() = 0;
virtual void delete_element(DOUBLE target_key) = 0;
virtual void search_element(DOUBLE search_key) = 0;
virtual void build_list(DOUBLE *A,int size) = 0;
virtual int get_number_elements() = 0;
virtual void insert_after(DOUBLE before,DOUBLE after) = 0;
virtual void insert_before(DOUBLE after,DOUBLE before) = 0;
virtual istream& grab(istream& in) = 0;
virtual ostream& print(ostream& out) const = 0;
protected:
char *name;
};