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

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
{
current = current->next;
prev = prev->next;
}
if(current != NULL && i == current->a.i)
{
// пропускаем элементы, находящиеся в той же
// строке,но в столбцах с меньшим номером
while(current != NULL && j > current->a.j)
{
current = current->next;
prev = prev->next;
}
// если элемент в заданной позиции уже
// имеется,изменяем его значение
if(current != NULL && j == current->a.j)
{
current->a.value = v;
insert = true;
}
}
// вставляем новый элемент в список
if(!insert)
{
help = new ListElement(i, j, v);
prev->next = help;
help->next = current;
count++;
}
}
else
// генерация исключения в случае
// некорректной позиции вставляемого элемента
throw BadIndexException(m, n);
}
// метод удаления элемента по индексам,
// т.е. присвоение элементу нулевого значения
void MatrixList::DeleteElement(int i, int j)
{
ListElement* help, *prev, *current;
// список пуст, следовательно, матрица нулевая
if(head == NULL)
return;
// удаление первого элемента списка
if(head->a.i == i && head->a.j == j)
{
help = head;
head = head->next;
174
                                Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
                 {
                     current = current->next;
                     prev = prev->next;
                 }
                 if(current != NULL && i == current->a.i)
                 {
                      // пропускаем элементы, находящиеся в той же
                      // строке,но в столбцах с меньшим номером
                      while(current != NULL && j > current->a.j)
                      {
                           current = current->next;
                           prev = prev->next;
                      }
                      // если элемент в заданной позиции уже
                      // имеется,изменяем его значение
                      if(current != NULL && j == current->a.j)
                      {
                           current->a.value = v;
                           insert = true;
                      }
                 }
                 // вставляем новый элемент в список
                 if(!insert)
                 {
                      help = new ListElement(i, j, v);
                      prev->next = help;
                      help->next = current;
                      count++;
                 }
          }
          else
                 // генерация исключения в случае
                 // некорректной позиции вставляемого элемента
                 throw BadIndexException(m, n);
      }

      // метод удаления элемента по индексам,
      // т.е. присвоение элементу нулевого значения
      void MatrixList::DeleteElement(int i, int j)
      {
           ListElement* help, *prev, *current;
           // список пуст, следовательно, матрица нулевая
           if(head == NULL)
                return;
           // удаление первого элемента списка
           if(head->a.i == i && head->a.j == j)
           {
                help = head;
                head = head->next;

174