Имеются линейные однонаправленные списки - Pascal

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

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

Имеются линейные однонаправленные списки:
type
        p=^item;
        item=record
                  data:real;
                   reference:p
        end;
Написать программу, которая оставляет в списке L только первые вхождения одинаковых элементов.

Решение задачи: «Имеются линейные однонаправленные списки»

textual
Листинг программы
Const eps = 0.0000001;
 
Type
  p=^item;
  item=record
         data : real;
         ref  : p
       end;
 
Var
  L0,L,t,tt : p;
  i,j       : Byte;
 
Procedure AddItem(A : Real);
Begin
  If L0=nil then
  Begin
    New(L0);
    L0^.data:=A;
    L0^.ref:=nil;
  end
    else
    Begin
      L:=L0;
      While L^.ref<>nil do L:=L^.ref;
      New(t);
      t^.data:=A;
      t^.ref:=nil;
      L^.ref:=t;
    end;
end;
 
Procedure ShowL;
Begin
  L:=L0;
  If L<>nil then
    While L<>nil do
    Begin
      Writeln(L^.data);
      L:=L^.ref;
    end;
end;
 
Begin
  L0:=nil;
  For i:=1 to 3 do
    For j:=1 to 5 do AddItem(j);
  
  Writeln('Исходный список:');
  ShowL;
  Writeln;
  
  L:=L0;
  While L<>nil do
  Begin
    t:=L;
    tt:=L^.ref;
    While tt<>nil do
    Begin
      If abs(L^.data-tt^.data)-eps<=0 then
      Begin
        t^.ref:=tt^.ref;
        Dispose(tt);
        tt:=t^.ref;
      end
      else
        Begin
          t:=tt;
          tt:=tt^.ref;
        end;
    end;
    L:=L^.ref;
  end;
  
  Writeln('Отфильтрованный список:');
  ShowL;
  Writeln;
  
  While L0<>nil do
  Begin
    L:=L0^.ref;
    Dispose(L0);
    L0:=L;
  end;
end.

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

  1. В начале кода объявляются константа eps (маленькая заданная точность) и тип данных p, который представляет собой ссылку на запись item.
  2. Затем объявляются переменные L0, L, t и tt, которые представляют собой ссылки на объекты типа p.
  3. Далее описывается процедура AddItem, которая принимает на вход число и добавляет его в список. Если список пуст, то создается новый элемент. Если в списке уже есть элементы, то они перебираются до тех пор, пока не будет найден подходящий для вставки нового элемента.
  4. После этого описывается процедура ShowL, которая выводит содержимое списка на экран.
  5. Затем начинается основной цикл программы, который состоит из двух циклов for. Первый цикл перебирает числа от 1 до 3, а второй цикл перебирает числа от 1 до 5. Для каждого числа выполняется добавление элемента в список.
  6. После окончания второго цикла for выводится исходный список и выполняется вывод отфильтрованного списка.
  7. Затем выполняется вывод отфильтрованного списка.
  8. В конце программы выполняется очистка памяти, освобождая все использованные элементы списка.

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


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

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

15   голосов , оценка 4.267 из 5
Похожие ответы