Объектно-ориентированное программирование на C++. Андрианова А.А - 157 стр.

UptoLike

Объектно-ориентированное программирование на С++
throw ListIsEmptyException ();
int key;
// удаление из начала списка (приводит к изменению
// адреса первого элемента списка)
if(pos == 1)
{
help = head;
head = head -> GetPointer();
key = help -> GetValue();
delete help;
return key;
}
// поиск элемента, после которого
// требуется удалить элемент
current = head;
int i = 1;
while(i != pos - 1 && current->GetPointer() != NULL)
{
i++;
current = current -> GetPointer();
}
// генерация исключения для случая
// некорректной позиции удаления
if(current->GetPointer() == NULL)
throw IncorrectPositionException();
// удаление элемента из списка
help = current->GetPointer();
current -> SetPointer(help->GetPointer());
key = help->GetValue();
delete help;
return key;
}
// дружественная функция печати списка
ostream& operator << (ostream& out, List& list)
{
if(list.IsEmpty())
out << "Список пустой" << endl;
else
{
List::Element* current = list.head;
while(current != NULL)
{
out << current -> GetValue() << " ";
current = current -> GetPointer();
}
}
out << endl;
157
                     Объектно-ориентированное программирование на С++
         throw ListIsEmptyException ();
    int key;
    // удаление из начала списка (приводит к изменению
    // адреса первого элемента списка)
    if(pos == 1)
    {
         help = head;
         head = head -> GetPointer();
         key = help -> GetValue();
         delete help;
         return key;
    }
    // поиск элемента, после которого
    // требуется удалить элемент
    current = head;
    int i = 1;
    while(i != pos - 1 && current->GetPointer() != NULL)
    {
         i++;
         current = current -> GetPointer();
    }
    // генерация исключения для случая
    // некорректной позиции удаления
    if(current->GetPointer() == NULL)
         throw IncorrectPositionException();
    // удаление элемента из списка
    help = current->GetPointer();
    current -> SetPointer(help->GetPointer());
    key = help->GetValue();
    delete help;
    return key;
}

// дружественная функция печати списка
ostream& operator << (ostream& out, List& list)
{
     if(list.IsEmpty())
          out << "Список пустой" << endl;
     else
     {
          List::Element* current = list.head;
          while(current != NULL)
          {
               out << current -> GetValue() << " ";
               current = current -> GetPointer();
          }
     }
     out << endl;

                                                                  157