7 Apstraktni tipovi podataka nastavak 7 1 Dvostruko

  • Slides: 12
Download presentation
7. Apstraktni tipovi podataka (nastavak) 7. 1. Dvostruko povezane liste Dvostruko povezana lista je

7. Apstraktni tipovi podataka (nastavak) 7. 1. Dvostruko povezane liste Dvostruko povezana lista je struktura podataka oblika: pod 1 pod 2 podn Dvostruko povezana lista može se implemetirati slično kao i jednostruko povezana lista. Najpre treba da se definiše čvor dvostruko povezane liste. On sadrži nekakav podatak i dva pokazivača (prethodni i sledeći) koji ukazuju na prethodni, odnosno na sledeći element. pod pred sled

Kako se implementira dvostruko povezana lista? Svaki čvor je dinamička promenljiva koja ima 2

Kako se implementira dvostruko povezana lista? Svaki čvor je dinamička promenljiva koja ima 2 pokazivača: pred i sled (ili: levi i desni). Dakle, ako je sadržaj svakog čvor ceo broj, njen tip može biti ovako definisan: typedef struct cvor{ int broj; struct cvor *pred; struct cvor *sled; }DList; ili ako je sadržaj čvora adresa neke osobe, onda ovako možemo definisati tip: struct adresa{ char ime[40]; char ulica[40]; char grad[20]; char drzava[3]; char broj[11]; struct adresa * naredni; struct adresa *prethodni; } info;

Kako se operiše sa dvostruko povezanim listama? Pomoću sledeće funkcije (za prethodni primer) može

Kako se operiše sa dvostruko povezanim listama? Pomoću sledeće funkcije (za prethodni primer) može da se doda element na karj liste: void dlsmesti(struct adresa *i, struct adresa **zadnji) { if(!*zadnji) *zadnji = i; /* ovo je prvi podatak u listi */ else (*zadnji)->naredni = i; i->naredni = NULL; i->prethodni = *zadnji; *zanji = i; } Ovde poseban pokazivač ukazuje na element koji se dodaje, a poseban na kraj liste (Ovaj drugi na početku mor abiti NULL) Na sličan način bi se kreirala ma kakva dvostruko povezana lista.

Lako se realizuju sledeće operacije nad dvostruko povezanim listama: 1. Ubacivanje novog na početak;

Lako se realizuju sledeće operacije nad dvostruko povezanim listama: 1. Ubacivanje novog na početak; 2. Ubacivanje novog u sredinu; 3. ubacivanje novog na kraj.

7. 2. Grafovi Teorija grafova – posebna matematička disciplina Grafoidne (grafovske) strukture podataka –

7. 2. Grafovi Teorija grafova – posebna matematička disciplina Grafoidne (grafovske) strukture podataka – strukture podataka predstavljene preko grafova. Def 1. Neka je C neprazan skup i R skup parova (a, b), tako da a C i b C. Uređen para (C, R) naziva se graf. Elementi skupa C nazivaju se čvorovi grafa, a elementi skupa R grane (potezi) grafa. Čvorovi grafa se u ravni predstavljaju kružićima (ili tačkama), a grane linijama koje spajaju čvorove. Primer 1: Graf zadat na sledeći način: C={1, 2, 3, 4, 5} R={(1, 2), (1, 4), (2, 3), (2, 5), (3, 5), (4, 5) } može se predstaviti sledećom slikom. 4 1 3 5 2

Def 2. Graf G= (C, R) je orijentisan (ili usmeren) ukoliko R predstavlja skup

Def 2. Graf G= (C, R) je orijentisan (ili usmeren) ukoliko R predstavlja skup uređenih parova. (Ukoliko je R skup neuređenih parova iz C, graf G je neorijentisan. ) Primer 2: Neka je: C={1, 2, 3, 4, 5} R={(1, 2), (1, 4), (2, 3), (2, 5), (3, 5), (4, 5) } Ako su u R uređenji parovi, dobijamoorijentisani graf ako na sledećoj slici: 4 1 3 5 2 4 Ako su u R neuređeni parovi (tj. Grane sudvostruko orijentisane ili neorijentisane), dobija se graf kao na sledećoj slici. 1 3 5 2

Ako je grana grafa zadata uređenim parom (x, y), onda kažemo da ona polazi

Ako je grana grafa zadata uređenim parom (x, y), onda kažemo da ona polazi iz čvora x, a završava se u čvoru y. Zadatak 1. Odrediti C i R, kao i vrstu grafa, za grafove zadate sledećim slikama: 2 4 a d 1 3 6 5 b 7 c

Def 3. Put dužine n od čvora x do čvora y u grafu G

Def 3. Put dužine n od čvora x do čvora y u grafu G jeniz grana r 1, . . . rn sa sledećom osobinom: grana r 1 polazi iz čvora x, grana ri (i=2, . . . , n) počinje u onom čvoru u kojem se završava grana ri-1, grana rn se završava u čvoru y. Put može više puta da prolazi istom granom ili kroz isti čvor. Ukoliko put kroz svaki čvor grafa prolazi najviše jedanput, naziva se elemenatrnim. Put je kružni (zatvoren) ako se završava u istom čvoru u kojem je i započeo.

Def 4. Neorijentisani graf je povezan ako s ebilo koja dva njegova čvora mogu

Def 4. Neorijentisani graf je povezan ako s ebilo koja dva njegova čvora mogu povezati putem. Ako postoje čvorovi koji se ne mogu povezati putem, graf je nepovezan. Def 5. Za teme x kažemo da je dostupno iz temena y ako postoji put od temena y do temena x. Teme x je neposredno dostupno iz temena y, a ko postoj grana iz temena y do temena x. U vezi sa grafovima postoji veliki broj zadataka. Osnovno je pitanje kao predstavit graf.

7. 3. Binarna drveta Def 6. Drvo je konačan skup elemanata koji može biti

7. 3. Binarna drveta Def 6. Drvo je konačan skup elemanata koji može biti prazan ili se sastojati iz jednog elementa nazvanog koren i nekoliko podskupova disjunktnih elemenata od kojih je svaki drvo za sebe. Alternativno: Drvo je povezan graf sa n čvorova i n-1 grana. Def 7. Drvo čiji svaki čvor ima najviše dva poddrveta naziva se binarno drvo. Sreuktura za implementaciju binarnog drveta je slična strukturi za implementaciju dvostruko povezane liste. I ona će sadržati dva pokazivača, koje sada možemo nazavati levi i desni. (Ovako su mogli biti nazvani i kod dvostruko povezanih listi. )

Koren drveta Zadatak 1. Napisati program za: (a) formiranje binarsnog drveta čiji čvorovi sadrže

Koren drveta Zadatak 1. Napisati program za: (a) formiranje binarsnog drveta čiji čvorovi sadrže celobrojne vrednosti; (b) prebrojavanje njegovih čvorova; (c) računanje sume u čvorovima; Listovi drveta (d) računanje srednje vrednosti svih sadržaja čvorova drveta. Drvo 1. cpp

Zadatak 2. Napisati program za kreiranje binarnog drveta koje se sastoji iz niza celih,

Zadatak 2. Napisati program za kreiranje binarnog drveta koje se sastoji iz niza celih, različitih brojeva. Ispitati da li se zadati broj nalazi u formiranom drvetu. Ako želimo završiti unos podataka u drvoidnu strukturu, unećemo broj -9999 koji s ene upisuje u drvo. Drvotrazi. cpp Zadatak 3. Napisati program za kreiranje binarnog drveta na isti način kao u zadatku 2, a zatim izvršiti sortiranje unetih podataka. Drvosort. cpp