E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj programskih aplikacij > Dinamične podatkovne strrukture > Dvosmerni seznam

Prijava

Dvosmerni seznam

Podobna podatkovna struktura je tudi dvosmerni seznam. Pri tej podatkovni strukturi imamo v vozlišču dva kazalca (eden, ki kaže na predhodno vozlišče in eden, ki kaže na naslednje vozlišče). V podatkovni strukturi dvosmernega seznama pa imamo definirana tri kazalce (na prvo vozlišče, na trenutno vozlišče, na zadnje vozlišče). Prednost dvosmernega seznama pred enosmernim je možno premikanje v obe smeri, kar precej izboljša hitrost dostopa do vozlišč. Slabost pa so dvojne povezave s kazalci.
 
Dvosmerni seznam
Slika 1: Dvosmerni seznam
 
struct vozlisce
{


int
podatek;

vozlisce* k_naslednji;
vozlisce* k_prejsnji;
};


 

Primer:

 

vozlisce* zacetek, konec, novi, trenutni;

 


Predpostavimo, da je kazalec:

 

 

Vloge kazalcev

 

Slika 2: Vloge kazalcev

 

 

Vstavljanje na začetek

 

novi->k_naslednji = zacetek;

novi->k_prejsni = NULL;
zacetek->k_prejsnji = novi;

zacetek = novi;

 

Vstavljanje na konec

 

novi->k_naslednji = NULL;

novi->k_prejsni = konec;
konec->k_naslednji = novi;

konec = novi;

 

 

Vstavljanje pred trenutni element

 

novi->k_naslednji = trenutni;

novi->k_prejsni = trenutni->k_prejsnji;
trenutni->k_prejsnji->k_naslednji = novi;

trenutni->k_prejsnji = novi;

 

Vstavljanje za trenutni element

 

novi->k_prejsnji = trenutni;

novi->k_naslednji = trenutni->k_naslednji;
trenutni->k_naslednji->k_prejsnji = novi;

trenutni->k_naslednji = novi;