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

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
}
// генерация исключения для случая
// некорректной позиции вставки
if(current == NULL)
throw IncorrectPositionException();
// создание нового элемента и включение его в список
help = new Element(key, current -> GetPointer());
current -> SetPointer(help);
}
// метод удаления элементов списка по ключу
void List::DeleteByKey(int key)
{
Element* current, *help;
// удаление элементов с заданным ключом
// из начала списка
while(head != NULL && head -> GetValue() == key)
{
help = head;
head = head -> GetPointer();
delete help;
}
if(head != NULL)
{
// удаление элементов с заданным ключом из
// середины и/или с конца списка
current = head;
while(current->GetPointer() != NULL)
{
help = current->GetPointer();
if(help->GetValue() == key)
{
current -> SetPointer
(help->GetPointer());
delete help;
}
else
current = current->GetPointer();
}
}
}
// метод удаления элемента списка с заданной позиции
int List::DeleteByPosition(int pos)
{
Element* current, *help;
// генерация исключения в случае попытки
// удаления из пустого списка
if(IsEmpty())
156
                              Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
          }
          // генерация исключения для случая
          // некорректной позиции вставки
          if(current == NULL)
               throw IncorrectPositionException();
          // создание нового элемента и включение его в список
          help = new Element(key, current -> GetPointer());
          current -> SetPointer(help);
      }

      // метод удаления элементов списка по ключу
      void List::DeleteByKey(int key)
      {
           Element* current, *help;
           // удаление элементов с заданным ключом
           // из начала списка
           while(head != NULL && head -> GetValue() == key)
           {
                help = head;
                head = head -> GetPointer();
                delete help;
           }
           if(head != NULL)
           {
                // удаление элементов с заданным ключом из
                // середины и/или с конца списка
                current = head;
                while(current->GetPointer() != NULL)
                {
                     help = current->GetPointer();
                     if(help->GetValue() == key)
                     {
                          current -> SetPointer
                                         (help->GetPointer());
                          delete help;
                     }
                     else
                          current = current->GetPointer();
                }
           }
      }

      // метод удаления элемента списка с заданной позиции
      int List::DeleteByPosition(int pos)
      {
           Element* current, *help;
           // генерация исключения в случае попытки
           // удаления из пустого списка
           if(IsEmpty())

156