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

UptoLike

Объектно-ориентированное программирование на С++
i-ой строке и j-ом столбце заключается в том, что при просмотре списка
пропускаются все элементы, расположенные в строках с меньшим
номером, чем i, а затем в заданной строке, но в столбцах с меньшим
номером, чем j. Такая процедура поиска используется в методе
добавления элемента в матрицу AddElement(int i, int j,
double v) для определения места вставки элемента в список, в методе
удаления элемента из списка DeleteElement(int i, int j) и в
методе проверки существования элемента с заданными индексами
ExistsElement(int i, int j).
// метод добавления нового элемента в список –
// используется как метод присвоения
// элементу матрицы конкретного значения
void MatrixList::AddElement(int i, int j, double v)
{
ListElement *current, *help, *prev;
bool insert = false;
// проверка корректности позиции
// вставляемого элемента
if (i < m && j < n)
{
// если новое значение элемента нулевое,
// удаляем элемент из списка
if(v == 0)
{
DeleteElement(i, j);
return;
}
// проверка, вставляется ли элемент
// на первое место
if(head == NULL || i < head->a.i ||
(i == head->a.i && j < head->a.j))
{
// вставка элемента в начало списка
help = new ListElement(i, j, v);
help->next = head;
head = help;
count++;
return;
}
// поиск позиции вставляемого элемента
prev = head;
current = head -> next;
// пропускаем элементы, находящиеся
// в строках с меньшим номером
while(current != NULL && i > current->a.i)
173
                           Объектно-ориентированное программирование на С++
i-ой строке и j-ом столбце заключается в том, что при просмотре списка
пропускаются все элементы, расположенные в строках с меньшим
номером, чем i, а затем – в заданной строке, но в столбцах с меньшим
номером, чем j. Такая процедура поиска используется в методе
добавления элемента в матрицу AddElement(int i, int j,
double v) для определения места вставки элемента в список, в методе
удаления элемента из списка DeleteElement(int i, int j) и в
методе проверки существования элемента с заданными индексами
ExistsElement(int i, int j).
     // метод добавления нового элемента в список –
     // используется как метод присвоения
     // элементу матрицы конкретного значения
     void MatrixList::AddElement(int i, int j, double v)
     {
          ListElement *current, *help, *prev;
          bool insert = false;
          // проверка корректности позиции
          // вставляемого элемента
          if (i < m && j < n)
          {
               // если новое значение элемента нулевое,
               // удаляем элемент из списка
               if(v == 0)
               {
                    DeleteElement(i, j);
                    return;
               }
               // проверка, вставляется ли элемент
               // на первое место
               if(head == NULL || i < head->a.i ||
                         (i == head->a.i && j < head->a.j))
               {
                    // вставка элемента в начало списка
                    help = new ListElement(i, j, v);
                    help->next = head;
                    head = help;
                    count++;
                    return;
               }
               // поиск позиции вставляемого элемента
               prev = head;
               current = head -> next;
               // пропускаем элементы, находящиеся
               // в строках с меньшим номером
               while(current != NULL && i > current->a.i)
                                                                       173