next up previous contents
Next: Iterators: Up: A Specific List Class: Previous: The Child DLLIST:

The Child CLLIST:

  
class DOUBLE_CLLIST : public DOUBLE_LIST_CORE{
    friend class DOUBLE_DL_CELL;
    friend class DOUBLECLLISTFIter;
    friend class DOUBLECLLISTBIter;
    friend class DOUBLEDLLISTFIter;
    friend class DOUBLEDLLISTBIter;
    friend istream& operator>>(istream& in,DOUBLE_CLLIST& A)
      {A.grab(in); return(in);};
    friend istream& operator>>(istream& in,DOUBLE_CLLIST* A)
      {A->grab(in); return(in);};
    friend ostream& operator<<(ostream& out,const DOUBLE_CLLIST& A)
      {A.print(out); return(out);};
    friend ostream& operator<<(ostream& out,const DOUBLE_CLLIST* A)
      {A->print(out); return(out);};
  public:
    DOUBLE_CLLIST(char *name_in);
    DOUBLE_CLLIST(DOUBLE_CLLIST&);
    ~DOUBLE_CLLIST();
    DOUBLE_CLLIST& operator=(const DOUBLE_CLLIST&);
    // agents
    int is_empty(){return(head==NULL);};
    void delete_element(DOUBLE target_key);
    void search_element(DOUBLE search_key);
    void build_list(DOUBLE *A,int size);
    int get_number_elements();
    void insert_after(DOUBLE before_element,DOUBLE new_element);
    void insert_before(DOUBLE after_element,DOUBLE new_element);
    void mergesort();
    istream& grab(istream& in);
    ostream& print(ostream& out) const;
  protected:
    char *name;
    DOUBLE_DL_CELL *head;
    DOUBLE_DL_CELL *end;
    DOUBLE_DL_CELL* get_element_address(DOUBLE search_key);
    DOUBLE_DL_CELL* get_before_element_address(DOUBLE search_key);
    DOUBLE_DL_CELL* get_after_element_address(DOUBLE search_key);
  };



Jim Peterson
1999-05-17