Язык С++ и программирование на нем. Рейзлин В.И. - 141 стр.

UptoLike

Составители: 

143
void del ( elem * q ); // Удаляет элемент после q.
void print ( ); // Распечатывает список.
friend class iter;
elem *first ( ) { return h; }
};
class iter {
elem * current;
public:
iter ( list & l ) { current = l.h; }
elem * operator ++ ( ); // Продвижение по списку.
};
void list::create ( ETYPE c ){ h = new elem ( с, h ); }
void list::insert ( elem *q, ETYPE c ){
q->next = new elem ( c, q->next );}
void list::del ( elem *q ){ if ( q->next = = NULL ){
cout << ”Конец списка! ”<<
”Удаление следующего элемента невозможно!\n”; exit (1); }
elem * r = q->next; q-> next = q->next->next;
r->next = NULL;
delete r;}
elem iter::operator ++ ( ){
/* Возвращает указатель на текущий элемент списка. Осуществля-
ет продвижение по списку. Запоминает новый текущий элемент списка.
*/
if ( current ) { elem * tmp = current;
current = current->next;
return tmp; }
return NULL;
}
void list::release ( ) {
iter t ( *this );
elem *p;
while (( p = ++t )!= NULL ) {h = h->next; delete p;}}
void list::print ( ) {
iter t ( *this );
elem *p;
while (( p = ++t )!= NULL )
cout << p->data << “ “;
cout << ’\n;
}
// Конец файла list.cpp