Dvojna vrsta


Glavna stran

Uporaba in povzetek

Enojna vrsta je podatkovna struktura, kjer je jemanje in vstavljanje elementov določeno s FIFO principom (first-in first-out) - prvi element, ki je bil vstavljen v vrsto, je iz nje tudi prvi odstranjen. Elementi se vstavljajo na enem koncu, na drugem pa se jemljejo ven, in sicer v enakem vrstnem redu kot so v vrsto tudi prihajali. Dostopanje do elementov je s takim načinom precej omejeno. Odgovarja nam v določenih situacijah, kjer potrebujemo vedno samo prvi element v vrsti - npr. tiskanje dokumentov, kjer se tiska prvi dokument, ki je prišel v vrsto. Katerakoli vrsta pred blagajno, na šalterju, na čakalnih listah, v čakalnicah se ravna po FIFO principu.

Dvojna vrsta pa je struktura, ki dopušča jemanje in vstavljanje elementov na obeh koncih. Tako je neke vrste dobra kombinacija dveh struktur, sklada in enojne vrste, saj uspešno združuje vstavljanje in jemanje elementov na obeh koncih. Elementi v dvojni vrsti so tako hitro dostopni z obeh strani, kar je prednost v primerjavi z dostopom do elementov v skladu ali v dvojni vrsti. Ker struktura deluje po krožnem načinu vstavljanja in jemanja elementov, nismo omejeni s fiksiranim koncem ali začetkom strukture, ki na tak način postane zelo fleksibilna. Omejeni smo tako v glavnem z velikostjo prostora, ki nam je za strukturo na voljo.

Zaradi dostopa do obeh strani vrste si lahko njeno uporabnost predstavljamo v primerih, ko bi želeli elemente razdeliti v vrsto po dveh kriterijih - elemente, ki odgovarjajo enemu kriteriju, vstavljamo na en konec, druge pa na drug konec vrste, zapomnimo pa si ločevalni element. Pri ponovnem dostopanju do podatkov jih ne potrebujemo zopet razdeliti - so že. Hkrati pa lahko dostopamo do obeh koncev vrste.
Kadar elemente jemljemo iz vrste, jih lahko dobivamo ven v različnih zaporedjih, pri skladu in enojni vrsti pa samo na en način. In obratno, pri vstavljanju elementov - kot prikazano na sliki dvojne vrste v poglavju Uvod - Enojna in dvojna vrsta. Če v tem primeru elemente dobivamo sproti, bi pri skladu ali enojni vrsti sestavili lahko le eno zaporedje, pri dvojni vrsti pa se lahko odločimo, kam element postavimo, na levo ali desno, in imamo možnost sestaviti različna zaporedja.
Uporabnost dvojne vrste lahko vidimo tudi v tem, da lahko dostopamo do kateregakoli zaporedja elementov, ki se nahajajo v vrsti - odstranimo določeno število elementov na desnem oz. levem koncu vrste in ostane nam zaporedje z željenim začetkom in koncem.

Pri implementaciji dvojne (tudi enojne) vrste moramo biti pozorni na krožno predstavitev dvojne vrste in izvajanje določenih operacij po modulu števila mest v tabeli; takrat pride prednost shranjevanja in dostopanja do elementov res do izraza. Prav tako moramo biti pri implementaciji strukture v programski jezik pozorni na mejne primere, kadar izvajanje operacije ni možno oz. kadar je prostor v tabeli že do konca zapolnjen. Ne pozabimo, da lahko v tabeli s številom mest n, hranimo lahko največ do n-1 elementov, zato da lahko ločimo med polno in prazno tabelo. Vsekakor moramo imeti na voljo možnost določanja velikosti tabele z enim od konstruktorjev.

V našem zapisu razreda Dvojna Vrsta je struktura predstavljena kot tabela; druga možnost predstavitve bi bila predstavitev vrste z dvojnim linearnim seznamom. V tem razredu smo se odločili za hranjenje celih števil v vrsti, lahko pa bi razred spremenili in hranili v vrsti npr. realna števila, nize, itd.