6 Apstraktne tipovi podatka Pod ATP podrazumevamo skup

  • Slides: 17
Download presentation
6. Apstraktne tipovi podatka Pod ATP podrazumevamo skup elemenata od kojih svaki čuva nekakav

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.

Prilikom rada sa ATP u C-u potrebno je: opisati tip, na jedan apstraktan način,

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) , . . .

6. 1. Povezane liste (obrađene!) Povezan 1. cpp s 1

6. 1. Povezane liste (obrađene!) Povezan 1. cpp s 1

6. 1. Povezane liste (obrađene!) Povezan 1. cpp s 1

6. 1. Povezane liste (obrađene!) Povezan 1. cpp s 1

6. 1. Povezane liste (obrađene!) Povezan 1. cpp s 1 s 2 s 1

6. 1. Povezane liste (obrađene!) Povezan 1. cpp s 1 s 2 s 1

6. 1. Povezane liste (obrađene!) Povezan 1. cpp s 1 s 2 s 1

6. 1. Povezane liste (obrađene!) Povezan 1. cpp s 1 s 2 s 1

6. 2. Stekovi Stek je struktura podataka organizovana po principu LIFO (Last In First

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, . . .

6. 2. 1. Operisanje sa stekom Akcija Sadržaj steka push(A) A push(B) B A

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 B A push(F) F B A pop( ) nalazi A Prazan

6. 2. 2. Realizacija steka preko nizova (za cele brojeve) int stack[MAX]; int vrh=0;

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 punn"); return; } stack[vrh] = i; vrh++; Stekniz. cpp } Srekpok. cpp /* Uzimanje elemenata sa vrha steka */ int pop (void) { vrh--; if(vrh < 0) { printf("Potkoracenje stekan"); return 0; } return stack[vrh]; }

6. 2. 3. Postfiksni kalkulator implementiran preko steka Osnovu programa čine sledeće funkcije i

6. 2. 3. Postfiksni kalkulator implementiran preko steka Osnovu programa čine sledeće funkcije i promenljive: int *p; /* will point to a regio /* Retrieve the top element from n of free memory */ the stack. */ int *tos; /* points to top of sta ck */ int pop(void) int *bos; /* points to bottom of { stack */ p--; /* Store an element on the stac if(p < tos) { k. */ printf ("Stack Underflown"); void push(int i) return 0; { } if(p > bos) { return *p; printf (''Stack Fulln"); } return; } *p = i; p++; }

6. 3. Redovi Red je struktura podataka organizovana po principu FIFO (First In First

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

6. 3. 1. Operisanje sa redovima Akcija ubaci(A) Sadržaj reda A ubaci(B) A B

6. 3. 1. Operisanje sa redovima Akcija ubaci(A) Sadržaj reda A ubaci(B) A B ubaci(C) A B C uzmi( ) vrati A B C ubaci(D) B C D uzmi( ) vrati C D Raspored. Sast. cpp

6. 4. Dvostruko povezane liste Dvostruko povezana lista je struktura podataka oblika: pod 1

6. 4. 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

6. 5. Binarna drveta Definicija 1. Drvo je konačan skup elemanata koji može biti

6. 5. Binarna drveta Definicija 1. 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. Definicija 2. 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