Presentation is loading. Please wait.

Presentation is loading. Please wait.

6. Apstraktne tipovi podatka

Similar presentations


Presentation on theme: "6. Apstraktne tipovi podatka"— Presentation transcript:

1 6. Apstraktne tipovi podatka
Pod ATP podrazumevamo skup elemenata od kojih svaki čuva nekakav podarak i povezan je sa jednim ili više drugih elemenata. ATP ima ugrađene unutrašnje operacije koje mogu biti izvršene na njemu ili pomoću njega. Korisnik ATP ne mora imati nikakve informacije o unutrašnjoj reprezentaciji podataka i operacija. ATP se prirodno realizuju kao dinamičke strukture podataka, međutim, mogu se koristiti i statičke strukture (npr. nizovi) za njihovu realizaciju.

2 Prilikom rada sa ATP u C-u potrebno je:
opisati tip, na jedan apstraktan način, uključujući i opis operacija; definisati funkcijski interfejs (tj. način) za predstavljanje novog tipa podataka; opisati kod u C-u za implementaciju opisanog interfejsa. U ATP spadaju: povezane liste, stekovi redovi, grafoidne strukture (grafovi), drvoidne strukture (drveta) , ...

3 6.1. Povezane liste (obrađene!)
Povezan1.cpp s1 s1

4 6.1. Povezane liste (obrađene!)
Povezan1.cpp s1 s1

5 6.1. Povezane liste (obrađene!)
Povezan1.cpp s1 s2 s1

6 6.1. Povezane liste (obrađene!)
Povezan1.cpp s1 s2 s1

7 6.2. Stekovi Stek je struktura podataka organizovana po principu LIFO (Last In First Out). Naime, poslednji unet podatak u stek prvi se uzima iz steka (ZUPI). Sreće se i naziv magacina (magacinska memorija) ili stog. Stekovi se često generišu pomoću povezanih lista. Postoje 2 osnovne operacije nad stekovima: ubaci (pop) u stek i izbaci (push) iz steka. One služe za smeštanje i uzimanje podatka. Kada se realizuju pomoćupokazivača, dovoljan je jedan pokazivač (u oznaci vrh, top, ...) koji ukazuje na vrh steka, tj. na poslednji uneti element u stek. Stekovi imaju veliku primenu u računarstvu: za relizacijeu rekurzije, kod prevodilaca, kod mikroprocesira, ...

8

9 6.2.1. Operisanje sa stekom Akcija Sadržaj steka push(A) A push(B) B A
push(C) C B A pop( ) nalazi C push(F) F B A pop( ) nalazi F pop( ) nalazi B pop( ) nalazi A Prazan

10 6.2.2. Realizacija steka preko nizova (za cele brojeve)
int stack[MAX]; int vrh=0; /* vrh steka */ /* Postavljanje elementa u stek */ void push(int i) { if(vrh >= MAX) { printf ("Stek je pun\n"); return; } stack[vrh] = i; vrh++; /* Uzimanje elemenata sa vrha steka */ int pop (void) { vrh--; if(vrh < 0) { printf("Potkoracenje steka\n"); return 0; } return stack[vrh]; Stekniz.cpp Srekpok.cpp

11 6.2.3. Postfiksni kalkulator implementiran preko steka
Osnovu programa čine sledeće funkcije i promenljive: int *p;   /* will point to a region of free memory */ int *tos; /* points to top of stack */ int *bos; /* points to bottom of stack */ /* Store an element on the stack. */ void push(int i) {   if(p > bos) {     printf (''Stack Full\n");     return;   }   *p = i;   p++; } /* Retrieve the top element from the stack. */ int pop(void) {   p--;   if(p < tos) {     printf ("Stack Underflow\n");     return 0;   }   return *p; }

12 6.3. Redovi Red je struktura podataka organizovana po principu FIFO (First In First Out). To je lista koja ima dva bitna svojstva: novi podatak se dodaje na kraj liste. podatak se uklanja (uzima) iz liste samo ako je na poćetku- Dakle, redovi se mogu definisati pomoću povezanih listi. Dve osnovne operacije su: ubaci u red (eng. Put) i uzmi iz reda (eng. Get).                                                                                                                                                                                                                                   

13 6.3.1. Operisanje sa redovima
Akcija Sadržaj reda ubaci(A) A ubaci(B) A B ubaci(C) A B C uzmi( ) vrati A B C ubaci(D) B C D uzmi( ) vrati B C D uzmi( ) vrati C D RasporedSast.cpp

14 6.4. Dvostruko povezane liste
Dvostruko povezana lista je struktura podataka oblika: pod1 pod2 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

15 6.5. Binarna drveta Definicija1. 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. Definicija2. 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.)

16 Zadatak 1. Napisati program za:
formiranje binarsnog drveta čiji čvorovi sadrže celobrojne vrednosti; prebrojavanje njegovih čvorova; računanje sume u čvorovima; računanje srednje vrednosti svih sadržaja čvorova drveta. Drvo1.cpp Koren drveta Listovi drveta

17 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 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


Download ppt "6. Apstraktne tipovi podatka"

Similar presentations


Ads by Google