В односвязном списке вставить элемент после заданного элемента списка - Pascal
Формулировка задачи:
В односвязном списке вставить элемент после n-го элемента списка.
Решение задачи: «В односвязном списке вставить элемент после заданного элемента списка»
textual
Листинг программы
. . . cur := first; index := 1; while index < n do begin cur := cur^.next; inc(index); end; tmp := cur^.next; New(cur^.next); cur := cur^.next; cur^.value := value; cur^.next := tmp; . . .
Объяснение кода листинга программы
В данном коде происходит вставка элемента в односвязный список.
cur := first;
— указываем начальную позицию в списке (первый элемент).index := 1;
— счётчик индекса элемента, начиная с 1.while index < n do
— цикл, выполняющийся до тех пор, пока индекс не станет равным размеру списка.cur := cur^.next;
— переходим к следующему элементу списка.inc(index);
— увеличиваем значение счётчика на 1.tmp := cur^.next;
— сохраняем ссылку на следующий элемент, так как будем его менять.New(cur^.next);
— выделяем память под новый элемент в списке.cur := cur^.next;
— переходим к новому (вставленному) элементу списка.cur^.value := value;
— присваиваем значение новому элементу списка.cur^.next := tmp;
— соединяем новый элемент со старым, через ссылку на следующий элемент. . . .