Программирование >>  Инициализация объектов класса, структура 

1 ... 73 74 75 [ 76 ] 77 78 79 ... 395


void remove front(); void remove all ();

таких операции:

int remove( int value );

inline void

i1ist::

remove front()

if ( at front ) {

ilist item *ptr = at front; at front = at front->next();

bump down size() ;

delete ptr;

Вот как выглядит реализация remove front() :

remove all() вызывает remove front() до тех пор, пока все элементы не будут

void ilist::

remove all() {

while ( at front ) remove front();

size = 0;

at front = at end = 0;

удалены:

Общая функция remove() также использует remove front() для обработки специального случая, когда удаляем1й элемент (элементы) находится в начале списка. Для удаления из середины списка используется итерация. У элемента, предшествующего удаляемому, необходимо модифицировать указатель next. Вот реализация функции:

Помимо вставки элементов, необходима возможность их удаления. Мы реализуем три



int ilist::

remove( int value ) {

ilist item *plist = at front; int elem cnt = 0;

while ( plist && plist->value() == value ) {

plist = plist->next();

remove front();

++elem cnt;

if ( ! plist )

return elem cnt; ilist item *prev = plist;

plist = plist->next();

while ( plist ) { if ( plist->value() == value ) { prev->next( plist->next() );

delete plist;

++elem cnt; bump down size(); plist = prev->next();

if ( ! plist ) {

at end = prev; return elem cnt;

else

prev = plist;

plist = plist->next();

return elem cnt;

Следующая программа проверяет работу операций в четырех случаях: когда удаляемые элементы расположены в конце списка, удаляются все элементы, таких элементов нет или они находятся и в начале, и в конце списка.



#include ilist.h int main() С++ для начинающих

ilist mylist; cout << \n------

<< тест << ----

#1: - элементы в конце\n

mylist.insert front( 1 ); mylist.insert front( 1 );

mylist.insert front( 1 );

my1ist.insert front( 2 ); mylist.insert front( 3 );

my1ist.insert front( 4 );

mylist.display();

int elem cnt = mylist.remove( 1 ); cout << \n << Удалено << elem cnt

<< элемент(ов) со значением 1\n ;

mylist.display();

mylist.remove all();

cout << \n-----------------------------------------

<< тест

#2: - элементы в начале\n

cout << \n << Удалено

<< элемент( ов) со значением 1\n ; mylist.display();

mylist.remove all () ;

cout << \n------------

;о << elem cnt о значением 1\n

<< тест

#3: - элементов нет в списке\n

cout << \n << Удалено

<< элемент( ов) со значением 1\n ; mylist.display();

mylist.remove all () ;

;о << elem cnt о значением 1\n

cout

\n-

<< тест

<< ----

#4: - элементы в конце и в начале\n

--\n \n ;

mylist.insert front( 1 ); mylist.insert front( 1 ); mylist.insert front( 1 );

mylist.display();

elem cnt = mylist.remove( 1 );

---\n -\n ;

mylist.insert front( 0 ); mylist.insert front( 2 ); mylist.insert front( 4 );

mylist.display();

elem cnt = mylist.remove( 1 );

---\n -\n ;

my1ist.insert front( 1 ); mylist.insert front( 1 );

my1ist.insert front( 1 );

my1ist.insert front( 0 ); mylist.insert front( 2 );

my1ist.insert front( 4 );

mylist.insert front( 1 ); my1ist.insert front( 1 );

mylist.insert front( 1 );

mylist.display() ;

elem cnt = mylist.remove( 1 );

cout << \n << Удалено << elem cnt

<< элемент( ов) со значением 1\n ;

--\n \n ;



1 ... 73 74 75 [ 76 ] 77 78 79 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика