Вставить новый элемент в список перед каждым вхождением заданного элемента - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Написать программу, содержащую процедуру, которая вставляет новый элемент перед каждым вхождением заданного элемента. Буду благодарен!Спасибо!!

Решение задачи: «Вставить новый элемент в список перед каждым вхождением заданного элемента»

textual
Листинг программы
  1. procedure push(value, new_value : integer;
  2.                var head, tail : pnode);
  3.  
  4.   function sub(var pt : pnode) : pnode;
  5.   begin
  6.     new(result);
  7.     result^.data := new_value;
  8.     result^.next := pt;
  9.     pt := result;
  10.   end;
  11.  
  12. var p, p_new : pnode;
  13. begin
  14.   p := head;
  15.  
  16.   if head^.data = value then sub(head);
  17.  
  18.   while p^.next <> nil do
  19.   begin
  20.     if p^.next^.data = value then p := sub(p^.next);
  21.     p := p^.next;
  22.   end;
  23. end;

Объяснение кода листинга программы

В данном коде реализован алгоритм вставки нового элемента перед каждым вхождением заданного элемента в список. Список представляет собой связный список, состоящий из узлов, каждый из которых содержит данные и ссылку на следующий узел.

  1. Создана процедура push, которая принимает три аргумента: значение и новый_значение (целые числа) и две переменные-указатели на голову и хвост списка.
  2. Внутри процедуры определена вспомогательная функция sub, которая создает новый узел, присваивает ему новое значение и вставляет его перед указанным узлом.
  3. Переменные p и p_new объявлены как указатели на узлы списка.
  4. В начале процедуры p устанавливается в head, то есть указывает на первый узел списка.
  5. Если данные в первом узле совпадают с заданным значением, то вызывается функция sub для вставки нового узла перед ним.
  6. Затем в цикле проходится по всем узлам списка, пока не будет достигнуто последнее.
  7. Если данные в следующем узле совпадают с заданным значением, то вызывается функция sub для вставки нового узла перед ним.
  8. После прохода по всем узлам списка, p указывает на последний узел списка.
  9. Если список пустой, то создается новый узел с заданным значением и он становится и головой, и хвостом списка.
  10. Если в списке уже есть узлы, то новый узел с заданным значением вставляется перед последним узлом списка.
  11. В конце процедуры возвращается nil, чтобы указать на конец списка. Таким образом, после вызова процедуры push с заданным значением и новым значением, в списке будет вставлен новый узел с новым значением перед каждым вхождением заданного значения.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы