8.6.                                                  237

void pop_front() ;

char& front(){return h -> data;}
char& back() {return t -> data;}
bool empty()const{ return h == 0;}
void release() ;

private:

listelem* h, *t;//   

struct listelem // 

{

char data;

listelem* next, *prev;

listelem(char c, listelem* n, listelem* p)
:data(c), next(n), prev(p){}

};

}

    ,    . 
 1 i s t e 1 em,        :  -
   .       
  .          -
    h     next,       -
  t     prev.   ,  
   0.

  -,     .  
list: : iterator        
.   -.  ,     -
        , -
   .     .

  list2.h

//   list

class iterator{
public:

iterator(listelem* p = 0):ptr(p){ }

iterator operator++() ;

iterator operator--();

iterator operator++(int);

iterator operator--(int);

listelem* operator-; () { return ptr; };

char& operator*() { return ptr -> data; }

operator listelem*(){return ptr;} //
private:

listelem* ptr;                     // listelem  
};

, , operator++ ()    :