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

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

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

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

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

textual
Листинг программы
procedure push(value, new_value : integer;
               var head, tail : pnode);
 
  function sub(var pt : pnode) : pnode;
  begin
    new(result);
    result^.data := new_value;
    result^.next := pt;
    pt := result;
  end;
 
var p, p_new : pnode;
begin
  p := head;
 
  if head^.data = value then sub(head);
 
  while p^.next <> nil do
  begin
    if p^.next^.data = value then p := sub(p^.next);
    p := p^.next;
  end;
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
Похожие ответы