Zadanie zaliczeniowe z laboratorium Pascala i C. ZSI I. 01/02 ------------------------------------------------------------- Zadane: wersja podstawowa: 23-24.01.2002, wersja rozszerzona: 30-31.01.2002, odbiór: 7-8.02.2002, 4 punkty. Zad 6b. Zadanie w wersji rozszerzonej (4 pkt) ------------------------------------- 1) Zaimplementuj modul udostepniajacy listy liczb calkowitych i operacje na nich. W module powinny znalezc sie nastepujace elementy: type lista = ^elemlisty; elemlisty = record w: integer; nast: lista end procedure WstawNaPocz (var l: lista; x: integer); { wstawia liczbe x jako pierwszy element listy l } procedure WstawNaKon (var l: lista; x: integer); { wstawia liczbe x na koniec listy l } function Dlugosc (l: lista): integer; { przekazuje w wyniku dlugosc listy l } function CzyPusta (l: lista): boolean; { przekazuje w wyniku true wtw, gdy lista jest pusta } procedure Inicjuj (var l: lista); { tworzy liste pusta } procedure Wstaw (var l: lista; x: integer); { wstawia element x na wlasciwe miejsce listy l, przy zalozeniu, ze l jest uporzadkowana niemalejaco } function Znajdz (l: lista; x: integer): lista; { odszukuje element x w liscie l i przekazuje w wyniku wskaznik do elementu listy lub nil, jesli x nie ma } procedure Usun (var l: lista; co: lista); { usuwa z listy l, element wskazywany przez co. Mozna przyjac, ze co pokazuje na pewien element listy l. Uwaga na implementacje! } procedure WypiszListe (l: lista; var f: text); { wypisuje liczby z listy l na plik f } procedure WczytajListe (var l: lista; var f: text); { wczytuje liczby z pliku --- dokladna specyfikacja na laboratorium } procedure NiszczListe (var l: lista); { usuwa wszystkie elementy z listy l i zwalnia pamiec zajmowana przez nie } procedure Odwroc (var l: lista); { odwraca liste l (nie tworzac jej kopii!) } 2) Napisz program, ktory zilustruje dzialanie modulu. Specyfikacja programu zostanie podana przez prowadzacego. 3) Dodaj do modułu funkcję Min(l: Lista): Lista, dającą wskaźnik do dowolnego minimanego elementu na liście (nil jeśli takiego nie ma, gdy lista jest pusta). 4) Napisz program, który korzystając z opisanego modułu wczyta z pliku liczby, posortuje je (sortowanie przez wybieranie) i zapisze na plik. Nazwy obu plików należy pobrać z wiersza komendy. Należy zwrócić uwagę na zwalnianie pamięci. Aby mieć pewność, że cała pamięć dynamiczna została zwolniona, należy na koniec działania programu wypisać na ekranie wartości funkcji MemAvail i MaxAvail z początku i z końca działania programu.