Материалы сайта
Это интересно
Вычислительная практика I курс
Смаль Дмитрий, АС-14 Работа № 8 Тема: « Динамические структуры данных » 1. Постановка задачи: Вариант №29: Написать процедуру или функцию, которая оставляет в списке L только первые вхождения одинаковых элементов. 2. Схема алгоритма ( см. Приложение №1 ) 3. Тестовые примеры: 1) Пусть список элементов будет такой 1 2 3 4 5 6 4 1 2, тогда результирующий список будет выглядеть так: 1 2 3 4 5 6 2) Пусть список элементов будет такой 2 2 2 2 2 2, тогда результирующий список будет выглядеть так: 2 3) Пусть список элементов будет такой 1, тогда результирующий список будет выглядеть так: 1 4. Распечатка текста программы: Program List; Uses crt; TYPE INFOTYPE=REAL; L1=^NODE; NODE=Record info:INFOTYPE; next:L1; end; VAR root,last:L1; x:INFOTYPE; c:CHAR; Procedure Init; begin root:=nil; last:=nil; end; Procedure Addnode(a:INFOTYPE); Var t:L1; begin New(t); t^.info:=a; t^.next:=nil; If root=nil then root:=t else last^.next:=t; last:=t; end; Procedure KILLER(t:L1); Var p:L1; begin p:=root; While (p<>nil) and (p^.next<>t) do begin p:=p^.next end; p^.next:=t^.next; Dispose(t); end; Procedure ReadData; Var x:INFOTYPE; c:CHAR; begin Writeln('Введите элементы списка:'); Repeat Readln(x); Addnode(x); Write('Еще ? (1-да, 0-нет)'); Read(c); Until c='0' end; Procedure Filter; Var i,j,k:L1; begin i:=root; While i<>nil do begin j:=i^.next; While j<>nil do begin If i^.info=j^.info then begin k:=j^.next; KILLER(j); j:=k; end else j:=j^.next end; i:=i^.next; end;Writeln; end; Procedure Show; Var t:L1; begin Writeln('Содержимое списка'); t:=root; While t<>nil do begin Write(t^.info:3:3,' '); t:=t^.next; end; end; Begin clrscr; Init; ReadData; Show; Filter; Writeln('Список отфильтрован'); Show; End. 5. Результаты тестирования: 1) 2) Введите элементы списка: Введите элементы списка: 1 2 Еще ? (1-да, 0-нет)1 Еще ? (1-да, 0-нет)1 2 2 Еще ? (1-да, 0-нет)1 Еще ? (1-да, 0-нет)1 3 2 Еще ? (1-да, 0-нет)1 Еще ? (1-да, 0-нет)1 4 2 Еще ? (1-да, 0-нет)1 Еще ? (1-да, 0-нет)1 5 2 Еще ? (1-да, 0-нет)1 Еще ? (1-да, 0-нет)1 6 2 Еще ? (1-да, 0-нет)1 Еще ? (1-да, 0- нет)0 4 Содержимое списка Еще ? (1-да, 0-нет)1 2.000 2.000 2.000 2.000 2.000 2.000 1 Список отфильтрован Еще ? (1-да, 0-нет)1 Содержимое списка 2 2.000 Еще ? (1-да, 0-нет)0 Содержимое списка 1.000 2.000 3.000 4.000 5.000 6.000 4.000 1.000 2.000 Список отфильтрован Содержимое списка 1.000 2.000 3.000 4.000 5.000 6.000 3) Введите элементы списка: 1 Еще ? (1-да, 0-нет)0 Содержимое списка 1.000 Список отфильтрован Содержимое списка 1.000