Zadanie zaliczeniowe nr 10 (2 trymestr), 19 II 2003 Kazda permutacja sklada sie z jednego lub wiecej rozlacznych cykli, np. permutacja liczb od 1 do 6 postaci 4 2 6 1 3 5 ma trzy cykle: <1,4> <2> <3,6,5>. Permutacje ciagu liczb calkowitych mozemy reprezentowac korzystajac z deklaracji: type lista=^wezel; wezel=record wart:integer; nast:lista end; permutacja=^wperm; wperm=record cykl:lista; nast:permutacja; end Permutacja bedzie przechowywana jako lista cykli a cykle jako listy cykliczne liczb calkowitych. Napisz program, ktory wczyta ze standardowego wejscia permutacje liczb 1..n (stalej n nie znamy) i wypisze na standardowe wyjscie permutacje odwrotna do niej, tzn. majaca odwrocona kolejnosc elementow w cyklach. Program glowny powinien miec postac: var memStart:longint; p1,p2:permutacja; begin memStart:=memAvail; p1:=wczytaj; if p1=nil then writeln('Bledne dane') else begin p2:=odwrotna(p1); writeln('Permutacja dana:'); wypisz(p1); usun(p1); writeln('Permutacja odwrotna:'); wypisz(p2); usun(p2) end; if memStart<>memAvail then writeln('Program niepoprawny') end. Zakladamy, ze permutacja dana i wynikowa beda zapisane jako ciag cykli, z ktorych kazdy bedzie opisany ciagiem liczb znajdujacych sie w cyklu i konczacym sie liczba, od ktorej rozpoczelismy. Np. permutacja wymieniona na poczatku tresci zadania moglaby byc zapisana tak: 1 4 1 2 2 3 6 5 3 a permutacja do niej odwrotna: 1 4 1 2 2 3 5 6 3 Uwaga: program powinien sprawdzac poprawnosc danych wejsciowych.