strukture podataka su složeni tipovi podataka · 2015. 2. 1. · strukture podataka • strukture...

57
Strukture podataka Strukture podataka su složeni tipovi podataka Nastaju primenom apstrakcije agregacije, tj. objedinjavanjem više jednostavnijih tipova podataka Svaka konkretna vrednost strukture podataka sastoji se od jednostavnijih delova, koji predstavljaju njene elemente.

Upload: others

Post on 21-Feb-2021

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Strukture podataka

• Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije, tj.

objedinjavanjem više jednostavnijih tipova podataka

• Svaka konkretna vrednost strukture podataka sastoji se od jednostavnijih delova, koji predstavljaju njene elemente.

Page 2: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Vrste struktura podataka

• Elementi mogu biti prosti ili složeni • Elementi u strukturi podataka mogu biti u nekom

međusobnom odnosu (relaciji) • Formalno struktura podataka može biti definisana kao

uređeni par S=(E,p) E je skup elemenata p je binarna relacija kojom je uređen skup E

• Pojedine vrste struktura podataka se definišu na osnovu toga kakav je njihov odnos, tj. kakve su osobine relacije p

• Najvažnija osobina relacije p je njena kardinalnost, koliko elemenata odgovara jednom elementu u datoj strukturi i obratno

Page 3: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Vrste struktura podataka

• Na osnovu kardinalnosti relacije р mogu se definisati sledeće vrste struktura: – 0:0 (ne postoji uređenje) - kolekcije i skupovi – 1:1 (linearno uređenje) – linearne strukture – 1:М - stabla – М:М – grafovi i mreže

Page 4: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Kolekcije i skupovi

– Elementi u strukturi nemaju međusobni odnos, tj. kardinalnost relacije p je 0:0

– Može se samo znati da li neki element pripada strukturi ili ne – Bliske su pojmu skupa u matematici, pa se tako i nazivaju – Skup nema duplikate (jedan isti element ne može dva puta biti

član skupa) – Kolekcija može imati duplikate (jedan isti element može biti dva

puta član kolekcije)

Skup

Page 5: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Linearne strukture

– Elementi u strukturi su linearno uredjeni, tj. kardinalnost relacije р je 1:1

– Osim jednom posebnom elementu koji se naziva prvi, svakom elementu prethoditačnojedan element.

– Osim jednom posebnom elementu koji se naziva poslednji, za svakim elementom sledi tačno jedan element

Linerana struktura

Prvi Poslednji

Page 6: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Stabla – hijerarhijske strukture

– Elementi u strukturi su linearno uređeni, tj. kardinalnost relacije р je 1:М

– Osim jednom posebnom elementu koji se naziva koren, svakom elementu prethodi tačno jedan element

– Iza svakog elementa može da sledi više elemenata

Stablo Koren

Page 7: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Grafovi ili mreže

– Elementi u strukturi su uređeni bez ograničenja, tj. Kardinalnost relacije р je М:М

– Svakom elementu može prethoditi više elemenata – Iza svakog elementa može da sledi više elemenata

Graf

Page 8: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Zaključak

• Navedene opšte strukture podataka pokrivaju sve moguće slučajeve – Svaka konkretna struktura podataka u praksi se svodi

na neku od navedenih • Za rešavanje problema u programiranju dovoljno

je poznavati kako se svaka od navedenih struktura implementira

• To je, upravo, predmet našeg izučavanja!

Page 9: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Vrste linearnih struktura

• Razlikuju se po mestu (lokaciji) gde se vrši ubacivanje i izbacivanje elemenata

• Stek (stack) – Ubaci i izbaci sa istog kraja

• Red (queue) – Ubaci na jednom i izbaci sa drugog kraja

• Dvostruki red (double queue - Deque) – Ubaci i izbaci na krajevima

• Lista (list) – ubaci/izbaci bilo gde

Page 10: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,
Page 11: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Stek (stack)

• LIFO struktura (Last In First Out) • Primer: Držač za Pez bombone

Page 12: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Stek (stack)

• Osnovne operacije – Ubacivanje (Push) – Izbacivanje (Pop)

• Ostale operacije – Vrati vrh (Peek) – Prazan stak? – Pun stak? – Broj elemenata

Page 13: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,
Page 14: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Red (queue)

• FIFO struktura (First In First Out) • Primer: Red u prodavnici

Jelena
Text Box
Page 15: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Dvostruki Red (queue)

• Primer:

Entitet

Page 16: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,
Page 17: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,
Page 18: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,
Page 19: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Stek (stack)

• Kao statička struktura

• Primer: 12 45 2 37

top

Presenter
Presentation Notes
Predstavlja se pomoću statičke strukture – niz
Page 20: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Stek (stack)

• Ubacivanje

pre nakon

12 45 2 37

top

12 45 2 17 37

top

Page 21: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Stek (stack)

• Izbacivanje

pre nakon

12 45 2 37

top

12 45 37

top

Page 22: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Red

• Red

Page 23: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Stek

Lista

Upoznajmo se, sada, sa reprezentacijom dinamickih skupovajednostavnim strukturama koje koriste pokazivace (pointere).

Lista–apstrakcija linearnog uredjenja

Najvažniji apstraktni tipovi podataka su oni kod kojih elementidomena imaju neku vrstu prirodnog uredjenja. Ovde ce biti recio apstraktnim tipovima podataka koji su zasnovani nalinearnom uredjenju.

Pojam linearnog uredjenja podrazumeva da je dat konacanskup elemenata S = {a1, a2, . . . , an}, pri cemu se popsmatrakonacan, uredjen niz elemenata-lista L = {b0, b1, . . . , bk},dužine k ∈ N, pri cemu bi ∈ S, za i = 0, k i b0 < b1 < · · · < bk.

Page 24: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Stek

Lista(cont.)

Napomena

Uredjenje u listi L ne zavisi od uredjenja elemenata u skupu S.

Lista može da se definiše rekurentno na sledeci nacin:

Definicija

(i) Prazna lista je lista;(ii)Lista se sastoji od prvog elementa koji se naziva glava liste iliste preostalih elemenata koja se naziva rep;(iii) Svaka lista se dobija konacnom primenom pravila (i) i (ii).

Page 25: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Stek

Stek i kju (queue)

Stek i kju su dinamicki sistemi iz kojih se elementi pomerajuskupovnom operacijom brisanja DELETE.U steku je element koji se briše iz liste onaj koji je poslednji,najskorije upisan, što znaci da je stek implementacija LAST-IN,FRST-OUT ili LIFO.Iz queuea se uvek briše element koji je najduže u listi. To znacida je queue implementacija FIRST-IN, FRST-OUT ili FIFO.Postoji nekoliko efektivnih postupaka za implementaciju steka ikjua na racunaru.Pokazacemo kako se svaki od njih može implementiratiupotrebom obicnih nizova.

Page 26: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Stek

Stek

INSERT operacija kojom se neki element ubacuje u stek jePUSH,a DELETE operacija kojom se neki element briše izsteka je POP.Stek od najviše n elemenata možemo inplementirati nizomS[1..n]. Ovom nizu pridružujemo atribut top[S] koji oznacavaposlednji unet element. Stek sadrži elemente S[1..top[S]], gdeje S[1] element sa dna steka i S[top[S]] element sa vrha.Kada je top[S] = 0 stek je prazan.Ako brišemo elemente iz praznog steka, on ce bitiUNDERFLOWS (ispod toka) što znaci da se javlja greška.Ako top[S] prelazi n stek ce biti OVERFLOWS (iznad toka).Stek operacije PUSH, POP i Stack-Empty mogu seimplementirati u nekoliko linija koda.

Page 27: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Stek

Stek(cont.)

Page 28: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Stek

Stek(cont.)

POP(S)

IF Stack − Empty(S) THEN

ERROR ”UNDERFLOW”

ELSE top[S]← top[S]− 1

RETURN S[top[S] + 1]

END

Page 29: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Queue

Queue (Kju)

I na kjuu se definišu osnovne operacije ubacivanja i brisanjapodataka.

Operacije

INSERT operacija na kjuu je ENQUEUE, a DELETE operacijaDEQUEUE.

Kao i POP operacija na steku i DEQUEUE operacija nema nijedan argument. Kju ima glavu head i rep tail. Element sedopisuje operacijom ENQUEUE tako što zauzima svoje mestona repu. Element koji se briše je, uvek, element smešten namesto glave.Sledeca slika pokazuje nacin implementacije kjua korišcenjemniza Q[1..n].

Page 30: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Queue

Queue(cont.)

Page 31: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Queue

Queue(cont.)

head[Q]–indeksira, tj. pokazuje na glavu kjua;

tail[Q]–indeksira narednu lokaciju u koju bi bio upisannovopristižuci element. Dakle, u kjuu su elementi nalokacijama

head[Q], head[Q] + 1, . . . , tail[Q]− 1,

pri cemu se "krecemo u krug" u smislu da lokacija 1neposredno sledi lokaciju n u ciklicnom smislu.

Napomena

Kada je head[Q]=tail[Q]–kju je prazan. Za inicijalna stanjauzima se head[Q]=tail[Q]=1

Page 32: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Queue

Queue(cont.)

Kada je kji prazan, primena operacije DEQUEUE dajeUNDERFLOW. Kju je pun kada je head[Q]=tail[Q]+1 idopisivanje elementa ukazuje na OVERFLOW.

ENQUEUE(Q, x)

Q[tail[Q]]← x

IF tail[Q] = length[Q] THEN

tail[Q]← 1

ELSE tail[Q] = tail[Q] + 1

END

Page 33: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Queue

Queue(cont.)

DEQUEUE(Q)

x← Q[head[Q]]

IF head[Q] = length[Q] THEN

head[Q]← 1

ELSE head[Q] = head[Q] + 1

RETURN x

END

Page 34: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Povezane liste

Definicija

Povezane liste su strukture podataka ciji su objekti sortiraniprema linearnom uredjenju. Uredjenje u povezanim listamaodredjeno je pokazivacem na svaki objekat.

Liste mogu imati nekoliko formi. One mogu biti jednostruko ilidvostruko povezane, mogu biti sortirane ili ne, mogu biticirkularne ili ne.Ako je lista jednostruko povezana imamo samo jedan pointernext[x] koji pokazuje na sledbenika proizvoljno izabranogelementa x iz liste.

Page 35: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Povezane liste(cont.)

Ako je rec o sortiranoj listi, linearno uredjenje liste odgovaralinearnom uredjenju kljuceva koji ukazuju na pozicije u kojimasu smešteni elementi liste.U tom slucaju je minimalni element smešten na mestu glave, amaksimalni u repu liste.

Cirkularne listeCirkularne liste su dvostruko-povezane liste sa dva pokazivacaprev, koji pokazuje na element koji prethodi izabranomelementu, i next, koji pokazuje na sledbenika datog elementa.

Page 36: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,
Page 37: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,
Page 38: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Pretraživanje

Napomena

U cirkularnim listama prev pokazivac glave liste pokazuje narep i next pokazivac repa liste pokazuje na glavu liste. Zatocirkularnu listu možemo posmatrati kao presten elemenata.

Procedura pretraživanja povezane liste L, LIST-SEARCH(L,k),pronalazi prvi element na poziciji kljuca k u listi L, prostimlinearnim pretraživanjem dovodeci pokazivac do ovogelementa.

Page 39: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Pretraživanje

LIST−SEARCH(L, k)

x← head[L]

WHILE x 6= NIL and key[x] 6= k

DO x← next[x]

RETURN x

END

Page 40: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Upis

Dati element x ciji je kljuc vec postavljen upisacemo ispredpovezane liste narednom procedurom:

LIST−INSERT(L, X)

next[x]← head[L]

IF head[L] 6= NIL THEN

prev[head[L]]← x

head[L]← x

prev[x]← NIL

END

Page 41: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Brisanje

Naredna procedura "seli" element x iz povezane liste L.Ako jedat pointer na element x, apdejtovanjem pokazivaca x se"udaljava iz povezane liste". Ako je dat samo element x bezpokazivaca najpre moramo pozvati proceduru LIST-SEARCHda postavimo pointer na ovaj element.

LIST−DELETE(L, x)

IF prev[x] 6= NIL THEN

next[prev[x]] ← next[x]

ELSE head[L]← next[x]

IF next[x] 6= NIL THEN

prev[next[x]] ← prev[x]

END

Page 42: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Stražar (Sentinel)

Pseudokod za LIST-DELETE bio bi jednostavniji ako bismomogli da ignorišemo granicne uslove za glavu i rep liste.

LIST−DELETE1(L, X)

next[prev[x]] ← next[x]

prev[next[x]] ← prev[x]

END

Stražar je lažni objekat koji nam dozvoljava da pojednostavimogranicne uslove. Na primer, pretpostavimo da smo sa listom Lpredvideli objekat NIL[L] koji oznacava NIL, ali može da sadrži isva polja drugih elemenata liste. Kad god smo upuceni na NILu kodu liste, vršimo zamenu te karakteristike stražarom NIL[L].

Page 43: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Stražar (cont.)

Ubacimo stražara NIL[L] izmedju glave i repa, tj. nekanext[NIL[L]] pokazuje glavu, a prev[NIL[L]] rep. Takodje, nextpolje za rep i prev za glavu su prikazani sa NIL[L].

LIST−SEARCH1(L, k)

x← next[NIL[L]]

WHILE x 6= NIL[L] and key[x] 6= k

DO x← next[x]

RETURN x

END

Page 44: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Pretraživanje povezanih listiUpis u povezanu listuBrisanje iz povezane listeSentinel

Stražar(cont.)

LIST−INSERT1(L, x)

next[x]← next[NIL[L]]

prev[next[NIL[L]]]← x

next[NIL[L]]← x

prev[x]← NIL[L]

END

Page 45: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Predstavljanje objekata

Videcemo kako se mogu implementirati povezane strukturepodataka, bez objašnjavanja kom tipu podataka pripadajupokazivaci. I objekte i pokazivace uzimacemo iz nizova.Kolekcije objekata koje imaju ista polja, mogu se predstavitikorišcenjem niza za svako polje.Za dati niz indekasa x, key[x], next[x], prev[x] ukazuju na mestoobjekata u povezanoj listi. U odnosu na ovakvu interpolaciju,pokazivac x je zajednicki indeks za key, next i prev indekse.

Page 46: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Predstavljanje objekata(cont.)

Na slici key 4 sledi objekat sa kljucem 16. Key 4 se pojavljuje ukey[2], a 16 u key[5]. Takodje, next[5]=2 i prev[2]=5.

Page 47: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Predstavljanje objekata(cont.)

Reci se u memoriji racunara adresiraju celim brojevima od 0 doM-1, gde je M dovoljno veliki ceo broj. U nekim programskimjezicima jedan objekat zauzima niz uzastopnih lokacija umemoriji racunara. Pokazivac je, jednostavno, adresa prvememorijske lokacije objekta, a ostale memorijske lokacijeobjekata indeksiraju se dodavanjem neutralizacije pokazivacu.Slicnu strategiju možemo koristiti za implementaciju objekata uprogramskim okruženjima koja eksplicitno ne obezbedjuju tippodataka pokazivaca.Pretpostavimo da je objekat smešten u neprekidnom nizuA[j..k]. Svako polje objekta odgovara neutralizaciji ranga 0 dok-j, a pokazivac na objekat je indeksiran sa j.

Page 48: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Predstavljanje objekata(cont.)

Ofseti koji odgovaraju key, next i prev, oznaceni su, u našemprimeru, respektivno sa 0,1,2.Da bi, za dati pokazivac i, procitali vrednost prev[i], na primer,dodajemo pokazivac i ofsetu 2 i citamo A[i+2].

Svaki objekat ovde se pojavljuje kao podniz dužine 3 u nizu.Pokazivac objekta je index prvog elementa u objektu, dokstrelice ukazuju na redosled objekata.

Page 49: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Dodeljeni objekti

Da bi ubacili kljuc u dinamicki skup predstavljen dvostrukopovezanom listom moramo da dodelimo pokazivac trenutnoneiskorišcenom objektu u reprezentaciji povezane liste. Ovo jekorisno za skladištenje objekata koji nisu upotrebljeni upovezanoj listi, te mogu biti dodeljeni.U nekim sistemima postoji djubretar odgovoran da odredi kojisu objekti beskorisni.Posmatrajmo problem dodeljivanja istorodnih objekatakorišcenjem primera dvostruko povezane liste koja jepredstavljena višedimenzionalnim nizom.Pretpostavimo da niz u reprezentaciji ima dužinu m i dadinamicki skup u jednom trenutku sadrži n 6 m elemenata.

Page 50: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Dodeljeni objekti(cont.)

Tada n objekata predstavlja elemente aktuelne u dinamickomskupu, dok je preostalih m-n objekata slobodno. Slobodniobjekti se mogu iskoristiti za predstavljanje elemenata koji bi ubuduce bili ubaceni u dinamicki sistem.

Definicija

Slobodne objekte cuvamo u jednostruko povezanoj listi kojunazivamo slobodna lista.

Slobodna lista koristi samo next niz koji smešta nextpokazivace u listu.Glava slobodne liste nosi globalnu promenljivu free. Važno jeda svaki objekat ima reprezentaciju ili u slobodnoj listi ili u listi Lkojom je predstavljen neprazan dinamicki skup.

Page 51: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Dodeljeni objekti(cont.)

Page 52: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Dodeljeni objekti(cont.)

Slobodna lista je stek. Naredni objekat koji se dodeljuje je onajkoji je poslednji oslobodjen. Možemo upotrebiti niz naredbi zaPUSH i POP operacije steka za implementaciju procedura zadodeljivanje i oslobadjanje objekata, redom. Pretpostavljamoda globalna promenljiva free u narednim procedurama ukazujena prvi element slobodne liste.

Page 53: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Objekti koji se predstavljaju jednim nizomNelocirani i slobodni objekti

Dodeljeni objekti(cont.)

Na slikama vidimo efekat procedura ALLOCATE-OBJECT iFREE-OBJECT. (a) Strelice pokazuju strukturu free-liste. (b) jerezultat poziva procedure ALLOCATE-OBJECT() (koja cuva index 4),postavljajuci 25 u key[4] i poziva LIST-INSERT(L, 4). Nova free-listaima objekat 8, koji je bio next[4] u free-listi. (c) Posle izvršenjaLIST-DELETE(L, 5), pozivamo FREE-OBJECT(5). Objekat 5 postajenova glava free-liste, ciji je sledbenik 8 u free-listi.

Page 54: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Korenska stabala sa neograni cenim grananjem

Predstavljanje korenskih stabala

Metod predstavljanja listi može se proširiti na proizvoljnuhomogenu, istorodnu strukturu podataka.Sada cemo videti kako se korenska stabla mogu predstavitipovezanim strukturama podataka. Tu cvorovi mogu imatiproizvoljan broj dece.Svaki cvor drveta predstavljen je nekim objektom. Kao i kodpovezanih listi pretpostavljamo da svaki cvor sadrži kljuc (key)polja. Nama su interesantna i korenska stabla saneogranicenim grananjem.

Page 55: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Korenska stabala sa neograni cenim grananjem

Korenska stabala sa neogranicenim grananjem

Šema za predstavljanje binarnog stabla može se proširiti doproizvoljne klase stabala, kod kojih je broj dece svakog cvoranajviše konstanta k: dete1, dete2, . . . , detek. Ova šema ne radikada je broj dece cvora neogranicen, obzirom da ne znamobroj polja koja treba u buduce dodeliti. Štaviše, kada je brojdece k ogranicen velikom konstantom, a najveci broj cvorovaima mali broj dece, gubi se dosta memorije.Na srecu, postoji pametna šema za korišcenje stabala savelikim brojem dece. U njima se mogu predstaviti levo dete idesni polubrat.Svaki cvor sadrži roditeljski pokazivac p i root[T] ukazuje nakoren stabla T.

Page 56: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Korenska stabala sa neograni cenim grananjem

Binarna stabla

Kod ovih stabala nemamo pokazivac za svako dete:1. Levo-dete[x] ukazuje na cvor koji je krajnje levo dete cvora x2. Desni-polubrat[x] ukazuje na polubrata od x neposredno sadesne strane. Ako cvor x nema dece onda je Levo-dete[x]=NIL,a ako je x krajnje desno dete svojih roditelja onda jeDesni-polubrat[x]=NIL.

Binarna stabla

Koristicemo polja p, left, right za smeštanje pokazivaca naroditeljski cvor, levo dete i desno dete datog cvora binarnogstabla T.Ako je p[x]=NIL, onda je x koren.

Page 57: Strukture podataka su složeni tipovi podataka · 2015. 2. 1. · Strukture podataka • Strukture podataka su složeni tipovi podataka – Nastaju primenom apstrakcije agregacije,

Elementarne strukture podatakaOverviev

Povezane listeImplementacija pokaziva ca i objekata

Predstavljanje korenskih stabalaAlgoritmi sortiranja

Korenska stabala sa neograni cenim grananjem

Binarna stabla(cont.)

Ako cvor x nema levo dete, onda je left[x]=NIL i sl. za desnodete. Koren citavog stabla oznacen je atributom root[T]. Ako jeroot[T]=NIL stablo je prazno.

Algoritmi sortiranja

Razmotricemo neke metode za sortiranje podataka uzuvodjenje dve pretpostavke:(i) Prva je da su podaci na neki nacin numerisani, tj. od prvogdo n-tog podatka. Ovo se može postici smeštanjem podataka uniz (listu) korišcenjem pokazivaca ili na neki drugi nacin.(ii) Druga pretpostavka je, da je dato odredjeno totalnouredjenje i da podatke želimo da uredimo u skladu sa njim.

Install
Rectangle