Vjezbe 9/10: Mapping, Relation Popis fileova: -------------------------------- mapping-hash.c mapping-polje.c tenis.c relation-multi.c relation-bit_matrix.c Mapping -------------------------------- -------------------------------- Mapping najcesce implementiramo kao rjecnik uredjenih parova (d,M(d)). Pritom koristimo neke od standardnih implementacija rjecnika: hash tablicu, sortirano polje, ili binarno stablo traženja. Zadatak: -------------------------------- U fileu mapping-hash.c napisana je deklaracija tipova i funkcija MaAssign za mapping implementiran pomocu otvorene hash-tablice. Dovrsite implementaciju ATP-a Mapping tako da implementirate i ostale funkcije: MaMakeNull, MaAssign, MaDeassign. Zadatak: -------------------------------- U fileu mapping-polje.c deklarirani su tipovi potrebni za implementaciju ATP-a Mapping pomocu sortiranog polja. Koristeci binarno pretrazivanje napisite funkciju MaCompute za ovu implementaciju. Zadatak -------------------------------- U fileu tenis.c napisane su deklaracije tipova za strukturu pogodnu za cuvanje bijektivnog Mappinga. Dopunite implementaciju sljedecim funkcijama: void Add(namestring name) dodaje igraca s imenom na kraj liste namestring Challenge(namestring name) ako je igrac k-ti na ljestvici, funkcija vraca ime igraca koji na ljestvici zauzima poziciju k-1 void Swap(int k) mijenja igrace na pozicijama k i k-1 Popis tipova i funkcija u ATP Mapping: -------------------------------------- domain range Mapping void MakeNull(Mapping* M) void MaAssign(Mapping* M, domain d, range r) void MaDeassign(Mapping* M, domain d) int MaCompute(Mapping M, domain d) //vraca 1 ako je M(d) definirano, inace vraca 0 Relation -------------------------------- -------------------------------- Neke moguce implementacije ATP-a relation ostvaruju se pomocu i) multiliste ii) bit-matrice iii) skupa (ATP Set) uredjenih parova Zadatak -------------------------------- U fileu relation-multi.c deklarirani su tipovi potrebni za implementaciju ATP-a Relation pomocu multiliste te je napisana funkcija ReCompute2. Implementirajte i funkciju ReCompute1. Zadatak -------------------------------- U fileu relation-bit_matrix.c deklarirani su tipovi potrebni za implementaciju ATP-a Relation pomocu bit matrice. Napisite funkciju ReCompute2 uz ovu implementaciju. Popis tipova i funkcija u ATP Relation: ---------------------------------------- domain1 domain2 Set1 Set2 Relation void ReMakeNull(Relation* R) void ReRelate(Relation* R, domain1 x, domain2 y) void ReUnrelate(Relation* R, domain1 x, domain2 y) void ReCompute2(Relation R, domain1 x, Set2* S2) void ReCompute1(Relation R, domain2 y, Set1* S1)