Имеются линейные однонаправленные списки - Pascal
Формулировка задачи:
Имеются линейные однонаправленные списки:
Написать программу, которая оставляет в списке L только первые вхождения одинаковых элементов.
type p=^item; item=record data:real; reference:p end;
Решение задачи: «Имеются линейные однонаправленные списки»
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.
Объяснение кода листинга программы
- В начале кода объявляются константа eps (маленькая заданная точность) и тип данных p, который представляет собой ссылку на запись item.
- Затем объявляются переменные L0, L, t и tt, которые представляют собой ссылки на объекты типа p.
- Далее описывается процедура AddItem, которая принимает на вход число и добавляет его в список. Если список пуст, то создается новый элемент. Если в списке уже есть элементы, то они перебираются до тех пор, пока не будет найден подходящий для вставки нового элемента.
- После этого описывается процедура ShowL, которая выводит содержимое списка на экран.
- Затем начинается основной цикл программы, который состоит из двух циклов for. Первый цикл перебирает числа от 1 до 3, а второй цикл перебирает числа от 1 до 5. Для каждого числа выполняется добавление элемента в список.
- После окончания второго цикла for выводится исходный список и выполняется вывод отфильтрованного списка.
- Затем выполняется вывод отфильтрованного списка.
- В конце программы выполняется очистка памяти, освобождая все использованные элементы списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д