Удаление одинаковых элементов списка - Turbo Pascal
Формулировка задачи:
Как подправить процедуру delete чтобы она удаляла элементы из первого списка, которые входят из второй.
Сейчас удаляет только одинаковые элементы первого списка.
Решение задачи: «Удаление одинаковых элементов списка»
textual
Листинг программы
type TData=Integer; PNode=^TNode; TNode=record next: PNode; data: TData; end; function Find(p: PNode; e: TData): PNode; begin while (p<>nil) and (p^.data<>e) do p:=p^.next; Find:=p; end; procedure Delete(var p: PNode; q: PNode); var t: ^PNode; d: PNode; begin t:=@p; while t^<>nil do begin if Find(q,t^^.data)=nil then t:=@t^^.next else begin d:=t^; t^:=t^^.next; Dispose(d); end; end; end; function NewNode(AData: TData; ANext: PNode): PNode; var p: PNode; begin New(p); NewNode:=p; p^.data:=AData; p^.next:=ANext; end; procedure Add(var p: PNode; const s: String); var t: TData; n: Integer; begin WriteLn(s); Write('Количество элементов: '); ReadLn(n); Write('Элементы: '); for n:=1 to n do begin Read(t); p:=NewNode(t,p); end; ReadLn; end; procedure Show(p: PNode); begin while p<>nil do with p^ do begin Write(' ',data); p:=next; end; WriteLn; end; var f, s: PNode; i: Integer; begin Add(f,'Список 1'); Add(s,'Список 2'); Delete(f,s); WriteLn('Список 1 без элементов из 2: '); Show(f); end.
Объяснение кода листинга программы
- В функции
Find
происходит поиск элемента в списке. Функция возвращает указатель на найденный элемент илиnil
, если элемент не найден. - В процедуре
Delete
происходит удаление элемента из списка. Если указанный элемент уже был удален, то его память освобождается. - В функции
NewNode
создается новый узел списка с заданными данными и указателем на следующий узел. - В процедуре
Add
добавляются элементы в список. Данные элементов считываются с консоли, создаются новые узлы и добавляются в список. - В процедуре
Show
происходит вывод списка на экран. Каждый элемент выводится пробелом. - В основной программе создаются два списка, добавляются элементы в них, затем удаляются. Выводится список без элементов из другого списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д