For faster navigation, this Iframe is preloading the Wikiwand page for Red (tip podataka).

Red (tip podataka)

Prikaz reda kao FIFO strukture

U računarstvu, red (енгл. queue) je posebna vrsta apstraktnog tipa podataka kod kojeg su glavne (ili jedine) operacije dodavanje elemenata na kraj reda, kao i uklanjanje elemenata sa početka reda. Red predstavlja FIFO strukturu(engl. First-In-First-Out], što podrazumeva da prvi element koji se dodaje u red će biti i prvi element koji će biti uklonjen iz reda. Ovo je ekvivalentno sa zahtevom da kada se doda novi element u red, da bi se on uklonio moraju biti uklonjeni svi elementi koji su dodati pre njega.

Red je primer linearne strukture podataka i dosta se koristi u računarstvu, transportu i operacionim istraživanjima gde se različiti entiteti kao što su podaci, predmeti, lica ili događaji čuvaju, kako bi kasnije bili obrađeni. U ovom kontekstu, red obavlja funkciju bafera.

Redovi su uobičajeni u programiranju, gde su implementirani kao strukture podataka zajedno sa pristupnim rutinama, kao jedna klasa u objektno-orijentisanom programiranju. Zajedničke implementacije su cirkularni baferi i povezane liste.

Implementacija reda

[уреди | уреди извор]

Teoretski, jedna karakteristika reda je da nema specifičan kapacitet. Bez obzira na to koliko elemenata red već sadrži, uvek se može dodati novi element. Red takođe može biti prazan i u tom slučaju uklanjanje elemanta je nemoguće sve dok se opet ne doda novi element. Nizovi fiksirane dužine imaju ograničen kapacitet, ali nije istina da članovi niza moraju biti kopirani na početak reda. Jednostavan trik pretvaranja niza u zatvoren krug i pustiti glavu i rep reda da se beskonačno vrte u tom krugu čini nepotrebnim pomeranje članova niza. Ako je n dužina niza, onda indeksi po modulu n će okrenuti niz u krug. Ovo je još uvek konceptualno najjednostavniji način da se izgradi red na jeziku visokog nivoa, ali je i dalje spor jer indeksi niza moraju biti poređani od nule do n, gde je n veličina niza, i to zahteva vreme za proveru da li je neki element izvan granice niza. Veličina niza mora biti deklarisana pre vremena, ali neke implementacije udvostruče deklarisanu veličinu niza kada dođe do prekoračenja. Većina modernih jezika sa objektima ili pokazivačima sadrže biblioteke sa dinamičkim listama. Takve strukture podataka mogu da nemaju ograničen kapacitet pored memorijskih ograničenja. Prekoračenje reda se dešava kada pokušamo da dodamo element na popunjen red, a potkoračenje reda kada pokušamo da uklonimo element iz praznog reda.

Postoji nekoliko efikasnih implementacija FIFO redova. Efikasna implementacija podrazumeva da je vreme potrebno za dodavanje elementa ili uklanjanje elementa O(1).

  • Povezana lista
    • Dvostruko povezana lista ima vremensku složenost umetanja i brisanja elementa na oba kraja O(1), tako da je prirodan izbor za red.
    • Jednostruko povezana lista ima efikasno ubacivanje i brisanje elementa na jednom kraju. Međutim, mala modifikacija uvođenjem pokazivača će omogućiti efikasnu implementaciju reda.
  • Red sa dva kraja se implementira uz pomoć modifikovanog dinamičkog niza.

Redovi i programski jezici

[уреди | уреди извор]

Redovi mogu biti implementirani kao poseban tip podataka, ili se mogu posmatrati kao redovi sa dva kraja, ako nisu implementirani odvojeno. Standardna biblioteka jezika C++ definiše "red" kao klasu koja je ograničena samo na operacije dodavanja ili uklanjanja. Od J2SE5.0, Java sadrži Red interfejs, koji precizira operacije reda. PHP ima SplQueue klasu i nezavisne biblioteke.

Spoljašnje veze

[уреди | уреди извор]
{{bottomLinkPreText}} {{bottomLinkText}}
Red (tip podataka)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?