Vjezbe 2: liste; Popis fileova: -------------------------------- zad1-input.c //upis, ispis, duljina liste zad2-dupli.c //izbacivanje visestrukih pojavljivanja iz liste zad3-insert.c //ubacivanje elementa tako da lista ostane sortirana zad4-merge.c //spajanje dvije sortirane liste u jednu (sortiranu) Zadatak: -------------------------------- U fileu "zad2-dupli.c" nalazi se rjesenje zadatka u kojem smo iz liste trebali izbrisati sva visestruka pojavljivanja elemenata. Primjerice, za ulaznu listu 3 3 5 1 4 2 6 2 8 1 izlaz bi trebao biti 3 5 1 4 2 6 8 (nije bitan poredak jedinstvenih elemenata u listi). Pokusajte rijesiti zadatak tako da bude u potpunosti neovisan o implementaciji. Medju ostalim, to znaci da ne pretpostavljamo nista o tome kako brisanje elementa utjece na pozicije u listi. Jedina pozicija koju uvijek mozemo sa sigurnoscu dohvatiti je First (i End), stoga se nakon brisanja pojedinog elementa moramo vratiti na poziciju First i krenuti po listi s pocetka. Zadatak: -------------------------------- Modificirajte algoritam u fileu "zad4-merge.c" tako da ne ubacuje duplikate u konacnu listu (L3), vec da od svakog elementa uzima samo po jedan primjerak. Popis tipova i funkcija u ATP List: ----------------------------------- elementtype List position position LiMakeNull(List *L); //vraca LiEnd void LiInsert(elementtype x, position p, List *L); //ako p nije End, onda ubacuje element x ispred onoga na poziciji p void LiDelete(position p, List *L); position LiFirst(List L); position LiEnd(List L); position LiPrevious(position p, List L); position LiNext(position p, List L); elementtype LiRetrieve(position p, List L);