Algoritmi i Strukture Podataka 1 4 Stekovi Zadatak

  • Slides: 42
Download presentation
Algoritmi i Strukture Podataka 1 4. Stekovi

Algoritmi i Strukture Podataka 1 4. Stekovi

Zadatak 1 – primena steka u evaluaciji izraza Izračunati vrednost izraza datog u postfiksnoj

Zadatak 1 – primena steka u evaluaciji izraza Izračunati vrednost izraza datog u postfiksnoj formi: AB+CD-E AE*+ ako promenljive imaju vrednosti: A=-6, B=4, C=5, D=3, E=2. Rešenje: – Na osnovu osobina postfiksnog izraza da operandi neposredno prethode operatoru i osobine da se poredak operanada ne menja, za razliku od poretka operatora, generiše se algoritam za izračunavanje izraza datog u postfiksnoj notaciji. – Algoritam prirodno koristi stek za smeštanje operanada. Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 2

Zadatak 1 - rešenje EVAL-EXP(postfix) INIT_STACK(S, n) while (not_end_of postfix) do x = INPUT(postfix)

Zadatak 1 - rešenje EVAL-EXP(postfix) INIT_STACK(S, n) while (not_end_of postfix) do x = INPUT(postfix) if (x = operand) then PUSH(S, x) else if (x = un_op) then oprnd = POP(S) rez = x oprnd PUSH(S, rez) else if (x = bin_op) then oprnd 2 = POP(S) oprnd 1 = POP(S) rez = oprnd 1 x oprnd 2 PUSH(S, rez) end_if end_while Elektrotehnički fakultet, Beograd rez = POP(S) if (STACK-EMPTY(S)) then return rez else ERROR(Nepravilan izraz) end_if Algoritmi i Strukture Podataka 1 3

Zadatak 1 - rešenje input x op 1 A -6 -6 B 4 -6

Zadatak 1 - rešenje input x op 1 A -6 -6 B 4 -6 4 + + C 5 -2 5 D 3 -2 5 3 - - E 2 2 2 4 -2 4 16 16 A -6 16 -6 E 2 16 -6 2 * * -6 2 -12 + + 16 -12 4 -6 5 op 2 4 rez -2 3 2 S -2 -2 2 2 16 -12 4 Stek je ostao prazan, dakle, izraz je bio pravilan. Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 4

Zadatak 2 – primena steka u obradi aritmetičkih izraza Izvršiti konverziju izraza u infiksnog

Zadatak 2 – primena steka u obradi aritmetičkih izraza Izvršiti konverziju izraza u infiksnog notaciji A+B*C-(D+E-F G H)*(I+(J-K)*L)/M u izraz u postfiksnoj notaciji. Izrazi u infiksnoj notaciji su nepogodni za prevodioce (generatore koda), jer zahtevaju višestruke prolaze kroz izraz Izrazi u prefiksnoj i postfiksnoj notaciji zahtevaju samo jedan prolaz Češće se koristi postfiksna notacija jer se jednostavno realizuje stekom Primer: A+B*C+E/D ABC*+ED/+ Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 5

Zadatak 2 - rešenje IN 2 POST(infix, postfix) INIT-STACK(S, n) rank = 0 next

Zadatak 2 - rešenje IN 2 POST(infix, postfix) INIT-STACK(S, n) rank = 0 next = INPUT(infix) while (next <> EOF) do if (next = operand) then OUTPUT(next, postfix) rank = rank + 1 else operator ul. pr stek pr. R +, - 2 2 -1 *, / 3 3 -1 5 4 -1 ( 6 0 - ) 1 - - Elektrotehnički fakultet, Beograd while not STACK-EMPTY(S) and (IPR(next) ≤ SPR(TOP(S))) do x = POP(S) OUTPUT(x, postfix) rank = rank + R(x) if (rank < 1) then ERROR(Nepravilan izraz) end_if end_while if (STACK-EMPTY(S) or next ≠ ’)’ ) then PUSH(S, next) else x = POP(S) end_if next = INPUT(infix) end_while not (STACK-EMPTY(S)) do x = POP(S) OUTPUT(x, postfix) rank = rank + R(x) end_while if (rank ≠ 1) then 6 ERROR(Nepravilan izraz) end_if

Zadatak 2 - rešenje A+B*C-(D+E-F G H)*(I+(J-K)*L)/M next stek postfix A rank A 1

Zadatak 2 - rešenje A+B*C-(D+E-F G H)*(I+(J-K)*L)/M next stek postfix A rank A 1 • • next : sledeći podatak ulaznog niza stek : sadržaj steka postfix : izlazni izraz rank : brojač koji proverava korektnost izraza + + A 1 B + AB 2 * +* AB 2 C +* ABC 3 - - ABC*+ 1 operator ul. pr stek pr. R ( -( ABC*+ 1 +, - 2 2 -1 D -( ABC*+D 2 *, / 3 3 -1 + -(+ ABC*+D 2 5 4 -1 E -(+ ABC*+DE 3 ( 6 0 - - -(- ABC*+DE+ 2 ) 1 - - . . . Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 7

Zadatak 2 - rešenje next stek postfix rank next . . . - -(-

Zadatak 2 - rešenje next stek postfix rank next . . . - -(- ABC*+DE+ F -(- stek postfix rank . . . 2 J -*(+( ABC*+DE+FGH -IJ 4 ABC*+DE+F 3 - -*(+(- ABC*+DE+FGH -IJ 4 -(- ABC*+DE+F 3 K -*(+(- ABC*+DE+FGH -IJK 5 G -(- ABC*+DE+FG 4 ) -*(+ ABC*+DE+FGH -IJK- 4 -(- ABC*+DE+FG 4 * -*(+* ABC*+DE+FGH -IJK- 4 H -(- ABC*+DE+FGH 5 L -*(+* ABC*+DE+FGH -IJK-L 5 ) - ABC*+DE+FGH - 2 ) -* ABC*+DE+FGH -IJK-L*+ 3 * -* ABC*+DE+FGH - 2 / -/ ABC*+DE+FGH -IJK-L*+* 2 ( -*( ABC*+DE+FGH - 2 M -/ ABC*+DE+FGH -IJK-L*+*M 3 I -*( ABC*+DE+FGH -I 3 ABC*+DE+FGH -IJK-L*+*M/- 1 + -*(+ ABC*+DE+FGH -I 3 ( -*(+( ABC*+DE+FGH -I 3 . . . Rezultat: ABC*+DE+FGH -IJK-L*+*M/Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 8

Zadatak za vežbu Izvršiti konverziju izraza u infiksnog notaciji (A+B) (C-D) E+A*E u izraz

Zadatak za vežbu Izvršiti konverziju izraza u infiksnog notaciji (A+B) (C-D) E+A*E u izraz u postfiksnoj notaciji. next stek postfix rank next 0 stek postfix rank . . . ( ( A 1 + + AB+CD-E 1 + (+ A 1 A + AB+CD-E A 2 B (+ AB 2 * +* AB+CD-E A 2 AB+ 1 E +* AB+CD-E AE 3 AB+CD-E AE*+ 1 ) AB+ 1 ( ( AB+ 1 C ( AB+C 2 - (- AB+C 2 D (- AB+CD 3 ) AB+CD- 2 E AB+CD-E 3 . . . Rezultat: AB+CD-E AE*+ 9

Zadatak 3 Osmisliti način na koji se stek može proširiti dodatnim informacijama, tako da

Zadatak 3 Osmisliti način na koji se stek može proširiti dodatnim informacijama, tako da se efikasno podrži dohvatanje minimalne i maksimalne vrednosti na steku. Napisati pseudokodove za osnovne operacije sa stekom, uz metode za dohvatanje minimalnog, odnosno maksimalnog elementa, pod uslovom da se koristi sekvencijalna reprezentacija. Pokazivač vrha steka pokazuje na poslednju zauzetu lokaciju na steku. Rešenje: – Prolazak kroz sve elemente steka nije efikasno rešenje – Neefikasno ažuriranje u slučaju čuvanja pokazivača na minimalni i maksimalni element na steku (prilikom skidanja elemenata sa steka) Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 10

Zadatak 3 - rešenje • Ideja je da se uz svaki element čuvaju trenutne

Zadatak 3 - rešenje • Ideja je da se uz svaki element čuvaju trenutne minimalne i maksimalne vrednosti na steku – O(1) za pristup Elektrotehnički fakultet, Beograd val min max 5 5 5 3 3 5 4 3 5 8 3 8 1 1 8 10 1 10 Algoritmi i Strukture Podataka 1 11

Zadatak 3 - rešenje PUSH(S, x) if (top[S] = n) then ERROR(Overflow) else if

Zadatak 3 - rešenje PUSH(S, x) if (top[S] = n) then ERROR(Overflow) else if (STACK_EMPTY(S) or x < min(S[top[S]])) then min = x else min = min(S[top[S]])) end_if if (STACK_EMPTY(S) or x > max(S[top[S]])) then max = x else max = max(S[top[S]])) end_if top[S] = top[S] +1 val(S[top[S]]) = x min(S[top[S]]) = min max(S[top[S]]) = max end_if Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 12

Zadatak 3 - rešenje POP(S) if (top[S] = 0) then ERROR(Underflow) else x =

Zadatak 3 - rešenje POP(S) if (top[S] = 0) then ERROR(Underflow) else x = val(S[top[S]]) top[S] = top[S] -1 return x end_if Elektrotehnički fakultet, Beograd MIN(S) if (top[S] = 0) then ERROR(Underflow) else min = min(S[top[S]]) return min end_if Algoritmi i Strukture Podataka 1 MAX(S) if (top[S] = 0) then ERROR(Underflow) else max = max(S[top[S]]) return max end_if 13

Zadatak 4 Razmatra se sekvencijalna implementacija više stekova. Napisati funkcije brisanja elementa sa steka

Zadatak 4 Razmatra se sekvencijalna implementacija više stekova. Napisati funkcije brisanja elementa sa steka Si i umetanje vrednosti x na stek Si. • Nepraktično je koristiti više nezavisnih stekova – za svaki od njih mora da se unapred odredi i rezerviše maksimalan kapacitet – izvestan broj njih može biti uglavnom nepopunjen (rasipanje memorijskog prostora) • Rešenje: smestiti više stekova u jedan vektor Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 14

Zadatak 4 - rešenje Najjednostavniji slučaj: dva steka u jednom vektoru slobodan prostor stek

Zadatak 4 - rešenje Najjednostavniji slučaj: dva steka u jednom vektoru slobodan prostor stek 1 stek 2 Ova ideja ne može da se primeni na slučaj sa više stekova stek 1 slobodan prostor Elektrotehnički fakultet, Beograd stek 2 slobodan prostor Algoritmi i Strukture Podataka 1 stek 3 slobodan prostor 15

Zadatak 4 - rešenje Neka je u zajedničkom vektoru V[1: m] smešteno k stekova

Zadatak 4 - rešenje Neka je u zajedničkom vektoru V[1: m] smešteno k stekova S 1, . . . , Sk. Osim vektora V, potrebni su vektori: • vektor pokazivača na vrhove stekova top[1: k] • vektor pozicije dna stekova b[1: k] top[i] pokazuje na vrh, a b[i] na dno steka Si, 1 i k. POP-M(i) PUSH-M(i, x) if (top[i] = b[i]) then return underflow else x = V[top[i]] top[i] = top[i] – 1 return x end_if if (top[i] = b[i + 1]) then ERROR(Overflow) else top[i] = top[i] + 1 V[top[i]] = x end_if Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 16

Redovi

Redovi

Zadatak 1 Na ulasku u železničku stanicu sa jednom prugom i jednim slepim kolosekom

Zadatak 1 Na ulasku u železničku stanicu sa jednom prugom i jednim slepim kolosekom desio se kvar, pa se na ulazu napravila kolona međunarodnih i domaćih vozova. Kvar je otklonjen i treba puštati vozove. Da bi međunarodni vozovi manje kasnili, oni se puštaju prvi, po redosledu dolaska. Postoji samo jedna pruga i vozovi se ne mogu „preticati“, tako da svi domaći vozovi koji su bili ispred međunarodnih se prebacuju na slepi kolosek koji je dovoljno veliki da svi vozovi mogu da stanu. Kada svi međunarodni vozovi odu, puštaju se prvo vozovi sa slepog koloseka, pa onda preostali domaći vozovi iz kolone. Domaćim vozovima je dozvoljeno menjati poredak propuštanja. U samu stanicu može da stane samo jedan voz. Koje strukture podataka bi trebalo koristiti za modeliranje vozova u koloni i na slepom koloseku, kako i zašto, u cilju efikasnog rešavanja ovog problema? 18

Zadatak 1 - rešenje • Međunarodni vozovi se preusmeravaju tako da se njihov međusobni

Zadatak 1 - rešenje • Međunarodni vozovi se preusmeravaju tako da se njihov međusobni poredak ne sme promeniti. – Implementacija korišćenjem strukture reda. • Domaći vozovi se preusmeravaju na slepi kolosek. Njihov redosled se sme promeniti. - Kako slepi kolosek ima samo jedan izlaz, pogodna struktura za njegovu realizaciju je stek. • Jedan po jedan, na početku se puštaju vozovi iz reda, dok u njemu ima međunarodnih vozova • Potom se prazni struktura steka i na kraju ostatak reda • Da bi se ovo realizovalo, potrebno je pratiti i broj međunarodnih vozova u redu Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 19

Zadatak 1 - primer Na ulasku u stanicu se nalaze sledeći vozovi: [stanica] <-

Zadatak 1 - primer Na ulasku u stanicu se nalaze sledeći vozovi: [stanica] <- M 12, D 07, D 02, M 03, D 03 SLEPI KOLOSEK M 12 D 07 D 02 M 03 D 03 STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 20

Zadatak 1 - primer – prvi međunarodni voz M 12 prelazi u stanicu SLEPI

Zadatak 1 - primer – prvi međunarodni voz M 12 prelazi u stanicu SLEPI KOLOSEK D 07 M 12 D 02 M 03 D 03 STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 21

Zadatak 1 - primer – međunarodni voz M 12 izlazi iz stanice, a domaći

Zadatak 1 - primer – međunarodni voz M 12 izlazi iz stanice, a domaći voz D 07 prelazi na slepi kolosek, da bi međunarodni voz M 03 mogao da prođe u stanicu (međunarodni imaju prioritet) SLEPI KOLOSEK D 07 D 02 M 03 D 03 STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 22

Zadatak 1 - primer – iz istog razloga i domaći voz D 02 prelazi

Zadatak 1 - primer – iz istog razloga i domaći voz D 02 prelazi na slepi kolosek SLEPI KOLOSEK D 07 D 02 M 03 D 03 STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 23

Zadatak 1 - primer – međunarodni voz M 03 sada može da pređe u

Zadatak 1 - primer – međunarodni voz M 03 sada može da pređe u stanicu SLEPI KOLOSEK D 07 D 02 M 03 D 03 STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 24

Zadatak 1 - primer – pošto nema više međunarodnih vozova, domaći vozovi mogu sa

Zadatak 1 - primer – pošto nema više međunarodnih vozova, domaći vozovi mogu sa slepog koloseka da prelaze u stanicu, dakle, D 02 ide u stanicu SLEPI KOLOSEK D 07 D 02 D 03 STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 25

Zadatak 1 - primer – nakon njegovog odlaska i D 07 sa slepog koloseka

Zadatak 1 - primer – nakon njegovog odlaska i D 07 sa slepog koloseka prelazi u stanicu SLEPI KOLOSEK D 07 D 03 STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 26

Zadatak 1 - primer – D 07 odlazi sa stanice, pa domaći voz D

Zadatak 1 - primer – D 07 odlazi sa stanice, pa domaći voz D 03 iz kolone može da pređe u stanicu SLEPI KOLOSEK D 03 STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 27

Zadatak 1 - primer – na kraju, voz D 03 odlazi i stanica ostaje

Zadatak 1 - primer – na kraju, voz D 03 odlazi i stanica ostaje prazna SLEPI KOLOSEK STANICA Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 28

Zadatak 2 Razmatra se prioritetni red. Objasniti moguće načine realizacije operacije brisanja (elementa najmanjeg

Zadatak 2 Razmatra se prioritetni red. Objasniti moguće načine realizacije operacije brisanja (elementa najmanjeg prioriteta), ako je red implementiran kao vektor. • Postoji više načina realizacije prioritetnih redova implementiranih kao vektor: – – markiranje izbačenog elementa umetanje novog elementa preko markiranog pomeranje svih elemenata prilikom brisanja održavanje uređenosti elemenata • Realizacije u pomoću vektora su uglavnom neefikasne! Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 29

Zadatak 2 - rešenje 1. Brisanje se najbrže obavlja ako se samo mesto uklonjenog

Zadatak 2 - rešenje 1. Brisanje se najbrže obavlja ako se samo mesto uklonjenog elementa posebno markira kao nevažeći element. 9 4 2 5 1 6 3 Pri narednim pretraživanjima na najmanji element ignorišu se markirani ! Iako se markirani elementi ignorišu, prilikom brisanja im se mora pristupiti (da bi se utvrdilo da su markirani) ! Lako može da se prepuni niz koji sadrži mnogo markiranih elemenata Tada mora da se prepakuje niz (izbace markirani elementi) Dodavanje elementa vrednosti 8 9 4 2 5 1 6 Elektrotehnički fakultet, Beograd 3 8 Dodavanje elementa vrednosti 7 9 4 Algoritmi i Strukture Podataka 1 5 6 3 8 7 30

Zadatak 2 - rešenje 2. S obzirom da su markirane pozicije praktično slobodne, prethodni

Zadatak 2 - rešenje 2. S obzirom da su markirane pozicije praktično slobodne, prethodni način može da se modifikuje tako što se, umesto iza poslednjeg, dozvoljava umetanje na poziciju prvog nevažećeg elementa (ako takav postoji). 9 4 2 free 5 1 6 3 rear ! Neefikasno umetanje: mora da se pretraži ceo vektor Može da se uvede pokazivač free koji pokazuje na prvu slobodnu lokaciju. Umetanje se onda vrši na mestu gde pokazuje free. Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 31

Zadatak 2 - rešenje 3. Ako red nije sortiran, neefikasno je dohvatanje elementa: mora

Zadatak 2 - rešenje 3. Ako red nije sortiran, neefikasno je dohvatanje elementa: mora da se prođe kroz ceo vektor i pronađe odgovarajući element. Radi efikasnog dohvatanja – poželjno je držati red sortiran ! Neefikasno umetanje: ako se ne umeće na kraj, moraju da se pomeraju elementi ! U proseku se pomera ½ elemenata. Moguće rešenje: ostaviti slobodnog prostora pre početka reda. – Pomerati elementa pri početku reda ako ima manje elemenata od mesta umetanja do početka reda – Pomerati elemente pri kraju reda u suprotnom Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 32

Zadatak 3 Posmatra se struktura podataka nad kojom je moguće izvršiti sledeće operacije za

Zadatak 3 Posmatra se struktura podataka nad kojom je moguće izvršiti sledeće operacije za pojedinačne podatke – dodavanja (add) – uklanjanja (remove) Struktura podataka je predviđena za rad sa celim brojevima. Poznato je da struktura podataka može biti stek, red ili prioritetan red kojeg element manje vrednosti ima veći prioritet. Predložiti jednostavnu i efikasnu proceduru koja jednoznačno određuje o kojoj vrsti strukture podataka se radi. Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 33

Zadatak 3 - rešenje • Tražena procedura treba da omogući jednoznačno određivanje vrste strukture

Zadatak 3 - rešenje • Tražena procedura treba da omogući jednoznačno određivanje vrste strukture podataka: – stek vraća poslednji stavljen element – red vraća prvi stavljen element – prioritetni red vraća element najmanje vrednosti • Prema tome: – treba osmisliti postupak koji koristi raspoložive operacije (dodavanje, uklanjanje) i nedvosmisleno nameće zaključak o prirodi strukture podataka – ima 3 različite strukture podataka → 3 različita moguća odgovora • Dakle: – umetnuti 3 elementa različitih vrednosti – izvaditi jedan element – na osnovu njegove vrednosti doneti zaključak Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 34

Zadatak 3 - rešenje • Pitanje: kojim redom umetati vrednosti? – – – stek

Zadatak 3 - rešenje • Pitanje: kojim redom umetati vrednosti? – – – stek vraća poslednju umetnutu red vraća prvu umetnutu prioritetni red vraća najmanju → najmanja ne sme biti ni prva ni poslednja → redosled ostalih nije bitan PROCEDURE IDENTIFY(data_structure) data_structure. add(2) data_structure. add(1) data_structure. add(3) x = data_structure. remove() if x = 1 then return pri_queue else if x = 2 then return queue else return stack end_procedure 35

Zadatak – za samostalnu vežbu U odeljenju za prijem i obradu pošiljki, u preduzeću

Zadatak – za samostalnu vežbu U odeljenju za prijem i obradu pošiljki, u preduzeću specijalizovanom za gradski transport pošiljki, rade tri zaposlena: jedan prima pošiljke koje donose kuriri, drugi razvrstava pošiljke prema ugovorenom vremenu isporuke (hitno, u toku dana, u roku od 3 dana), a treći pakuje pošiljke u transportna vozila. Pošiljke se u transportna vozila pakuju prema redosledu prispeća u odeljenje, tako da prednost imaju pošiljke koje treba isporučiti pre ostalih. Kapacitet transportnih vozila je 40 pošiljki (smatrati da su sve pošiljke iste težine i zapremine). 1. Predložiti strukturu podataka koja omogućava efikasnu selekciju pošiljki za slanje na prethodno opisan način. Skicirati procedure za umetanje u predloženu strukturu i dohvatanje elemenata iz nje. 2. Skicirati procedure PRIJEM koja realizuje prijem i razvrstavanje pošiljke i SLANJE koja realizuje selekciju i pakovanje pošiljke u transportno vozilo. Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 36

Zadatak 4 Sa redom implementiranim kao ulančana lista na koju pokazuje pokazivač q, realizovati

Zadatak 4 Sa redom implementiranim kao ulančana lista na koju pokazuje pokazivač q, realizovati operaciju umetanja elementa sa vrednošću x i operaciju brisanja iz nepraznog reda. • Kod neprioritetnih redova, umetanje se vrši: – nov element se dodaje na kraj reda – element se uzima sa početka reda • Tzv. FIFO (first in – first out) ili FCFS (first come – first served) disciplina Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 37

Zadatak 4 - rešenje INSERT-L(q, x) p = GETNODE info(p) = x next(p) =

Zadatak 4 - rešenje INSERT-L(q, x) p = GETNODE info(p) = x next(p) = nil if (rear[q] = nil) then q=p else next(rear[q]) = p end_if rear[q] = p DELETE-L(q) if (q = nil) then return underflow else p=q x = info(p) q = next(p) if (q = nil) then rear[q] = nil end_if FREENODE(p) return x end_if INSERT-L je zapravo dodavanje elementa na kraj liste, a DELETE-L je brisanje elementa sa početka liste. Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 38

Zadatak 5 Realizovati operaciju umetanja elementa u prioritetni red implementiran kao uređena jednostruko ulančana

Zadatak 5 Realizovati operaciju umetanja elementa u prioritetni red implementiran kao uređena jednostruko ulančana lista. Mogu se koristiti već realizovane funkcije: ADD_L(S, x) – ubacivanje novog elementa na početak liste INSERT_AFTER(q, x) – umetanje u listu novog čvora sa sadržajem x iza čvora čija je adresa q. • Prioritetni red – novi element ne sme da se umetne bilo gde • Realizacija prioritetnog reda pomoću ulančane liste je efikasnija u odnosu na vektor Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 39

Zadatak 5 - rešenje PQ-INSERT(pri_q, x) q = nil p = pri_q while (p

Zadatak 5 - rešenje PQ-INSERT(pri_q, x) q = nil p = pri_q while (p ≠ nil) and (x ≥ info(p)) do q=p p = next(p) end_while if (q = nil) then ADD-L(pri_q, x) else INSERT-AFTER(q, x) end_if Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 40

Zadatak 6 Realizovati red koristeći dva steka implementirana u jednom vektoru. front 9 bottom

Zadatak 6 Realizovati red koristeći dva steka implementirana u jednom vektoru. front 9 bottom top rear 3 4 2 6 5 1 top stek za umetanje (S 1) bottom stek za dohvatanje (S 2) • Ideja: – jedan stek služi za umetanje novog elementa – drugi stek služi za dohvatanje elementa Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 41

Zadatak 6 - rešenje INIT(S 1, S 2) ALLOCATE(V[1: n]) b 2=b 1=top 2=0

Zadatak 6 - rešenje INIT(S 1, S 2) ALLOCATE(V[1: n]) b 2=b 1=top 2=0 rear = front = 0 return INSERT(x) PUSH(S 1, x) b 2 = top 1 rear = top 1 return DELETE(x) if(top 1=top 2) then return underflow end_if x=POP(S 2) b 1 = top 2 front = top 2 return x Za vežbu: Realizovati stek koristeći dva reda implementirana u jednom vektoru. Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 42