0% found this document useful (0 votes)
326 views40 pages

Vezane Liste

Dokument opisuje jednostruko vezane liste. Opisuje osnovne koncepte vezanih lista poput čvorova, glave i repa liste. Također objašnjava različite vrste vezanih lista i temeljne operacije nad njima kao što su unos, ispis i brisanje elemenata.

Uploaded by

Ivan Ivanic
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
326 views40 pages

Vezane Liste

Dokument opisuje jednostruko vezane liste. Opisuje osnovne koncepte vezanih lista poput čvorova, glave i repa liste. Također objašnjava različite vrste vezanih lista i temeljne operacije nad njima kao što su unos, ispis i brisanje elemenata.

Uploaded by

Ivan Ivanic
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

STRUKTURE

PODATAKA I ALGORITMI

Vezane liste - Jednostruka linearna

Strukture podataka i algoritmi

2011/2012

Ivan Bilobrk - Odjel za Informa5ku - PMFST

VEZANA LISTA
Apstraktna struktura podataka iji su elemen> meusobno povezani jednom ili
dvjema vezama.
- elemente zovemo vorovima
- prema broju veza meu vorovima liste zovemo jednostrukima ili dvostrukima
- u vezanoj lis> svaki vor poznaje samo svog prvog susjeda

Listu je najlake vizualizira> kao vlak s lokomo>vom i vagonima


- cijeli vlak predstavlja listu
- vagoni predstavljaju vorove
- lokomo>va predstavlja pokaziva na listu

Strukture podataka i algoritmi

2 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

VEZANA LISTA
Pokaziva na listu (lokomo>va) je od iznimne vanos> za listu
- pokazuje na prvi vor koji pokazuje na drugi vor koji pokazuje na trei vor...
- pristup svim vorovima u lis> nije mogu bez ovog pokazivaa
- zove se head (glava)
- mora bi> inicijaliziran
ili pokazuje na prvi vor u lis5
ili pokazuje ni na to -> null

Za listu iji head pokazuje na null kaemo da je prazna

Strukture podataka i algoritmi

3 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

VEZANA LISTA
vorovi u vezanoj lis> sastoje se od
- barem jednog podatkovnog polja koje ga poblie opisuje
- barem jednog pokazivakog polja koje ga povezuje s drugim vorovima
ukoliko je lista jednostruko vezana, to pokazivako polje se obino zove next (slijedei)
ukoliko je lista dvostruko vezana, osim polja next, postoji i dodatno pokazivako polje a koje
se obino zove past (prethodni)

class Student
{
public int mb;
public string ime;
public int dob;
public Student next;
//public Student past;

}
Strukture podataka i algoritmi

public Student(string i, int d, int m)


{
ime = i;
dob = d;
mb = m;
next = null;
}
4 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

VEZANA LISTA
Iako ne toliko vaan kao head, i posljednji vor u lis> je takoer bitan
- ima i vlas>to ime: tail (rep)

Ovisno o deniciji posljednjeg vora u lis> mogua je i dodatna podjela vezanih


lista na
- posljednji je onaj koji ne pokazuje ni na jednog drugog -> linearna vezana lista
- posljednji je onaj koji pokazuje na prvog u lis> -> cirkularna vezana lista

Strukture podataka i algoritmi

5 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

VEZANA LISTA
Obzirom na broj veza meu vorovima, te na deniciju posljednjeg vora,
razlikujemo e>ri vrste vezanih lista
- jednostruko vezana linearna
- jednostruko vezana cirkularna
- dvostruko vezana linearna
- dvostruko vezana cirkularna

Strukture podataka i algoritmi

6 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

VEZANA LISTA
emu uope liste kad bi i nizovi bili dovoljni?
Neke operacije nad nizovima su sloene
- umetanje novog elementa izmeu dva postojea
- dodavanje novog elementa nakon to je kvota popunjena
- brisanje postojeeg elementa

U vezanoj lis> sve te operacije su znatno jednostavnije


Meu>m, neke operacije nad listama su opet sloenije
- pristup i-tom elementu
- sor>ranje svih elemenata

to odabra>?
- ovisi o primjeni!

Strukture podataka i algoritmi

7 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

VEZANA LISTA
Temeljne operacije nad listama su
- unos u listu
- ispis iz liste (svih ili nekih elemenata)
- pretraivanje unutar liste
- brisanje iz liste (jednog ili vie elemenata)

Svaka od ovih operacija moe se i hoe razmatra> nad svim vrstama vezanih
lista

Strukture podataka i algoritmi

8 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS U VEZANU LISTU


Prije samog unosa potrebno je prvo stvori> novi vor a to podrazumijeva
- odredi> podatkovna i pokazivaka polja
- pridijeli> memorijski prostor tom novom voru

Najzgodnije je to napravi> putem konstruktora


- prvo dobi> sve podatke od korisnika (ili od pozivne metode)
- potom kljunom rijeju new stvori> i inicijalizira> novi vor

Student novi = new Student(i,d,m);

Strukture podataka i algoritmi

9 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS U VEZANU LISTU


Stvaranje novog studenta obavljat e metoda NoviStudent()- na vjebama
- kao ulazni parametar prima varijablu mb (ma>ni broj) i vano je da ju primi kao referencu
- kao rezultat vraa tog novostvorenog studenta
ma5ni broj bi trebao bi5 jedinstven
o emu vodi rauna pozivna metoda

static Student NoviStudent(ref int mb)


{
dohvati ime studenta
dohvati dob studenta
!

!
stvori i inicijaliziraj novog studenta

!
poveaj matini broj
vrati novog studenta
}

Strukture podataka i algoritmi

10 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS U VEZANU LISTU


Jednom kad je novi student stvoren, unos je mogu
- na poetku liste
- na kraju liste
- unutar liste nakon nekog odreenog vora

Smisleno je napravi> opu metodu za unos koja bi onda u sebi sadravala opcije
koje bi korisnik odabrao pri svakom pojedinom unosu
Izrada ove sasvim jednostavne metode (switch) ostavljena je za samostalnu
vjebu
Iako su algoritmi za unos za svaku od e>ri vrste vezanih lista jednaki do na
specinost pojedine liste, radi jednostavnos> emo u poetku razmatra>
iskljuivo jednostruko vezanu linearnu (JVL) listu

Strukture podataka i algoritmi

11 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS NA POETAK JVL LISTE


Algoritam za unos u listu:
(1) usmjeri> novi vor da pokazuje na prvi vor u lis>
(2) usmjeri> pokaziva na listu da pokazuje na novi vor

Jesu li ovi brojevi tu sluajno?


to bi se dogodilo ako bi se poredak obrnuo?

Strukture podataka i algoritmi

12 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS NA POETAK JVL LISTE

ako se redoslijed
operacija obrne,
katastrofalne
posljedice slijede

koje?

Strukture podataka i algoritmi

13 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS NA POETAK JVL LISTE

Unos u praznu listu

!"#$

!"#$

Unos u nepraznu listu

!"#$

!"#$

!"#$

!"#$
B

Strukture podataka i algoritmi

14 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS NA POETAK JVL LISTE


Unos e obavlja> metoda UnosPocetak() - na vjebama
- kao parametre prima pokazivae na listu (head) te na novog studenta (novi)
- kao rezultat ne vraa nita

Analogna je metodi Push() koju smo razmatrali kod stoga.

Strukture podataka i algoritmi

15 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS NA KRAJ JVL LISTE


Algoritam za unos u listu:
- odredi> posljednji vor u lis>
- usmjeri> posljednjeg da pokazuje na novog

Strukture podataka i algoritmi

16 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS NA KRAJ JVL LISTE

Unos u praznu listu

!"#$

!"#$

Hm...

Strukture podataka i algoritmi

17 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS NA KRAJ JEDNOSTRUKO VEZANE LINEARNE LISTE


!"#$

%&"'
A

!"#$
A

NOVI
NOVI

NOVI
NOVI

!"#$
A

!"#$
A

NOVI

NOVI

Strukture podataka i algoritmi

18 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS NA KRAJ JEDNOSTRUKO VEZANE LINEARNE LISTE


Unos e obavlja> metoda UnosKraj() - na vjebama
- kao parametre prima pokazivae na listu (head) te na novog studenta (novi)
- kao rezultat ne vraa nita

!
!

!
!

static void UnosKraj(ref Student head, ref Student novi)


{
ako je lista prazna
! !
head pokazuje na novog
ako lista nije prazna
! !
odredi posljednjeg
! !
usmjeri ga na novog
Kako odredi> posljednji vor?
}

Strukture podataka i algoritmi

19 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS UNUTAR JVL LISTE


Algoritam za unos u listu:
- dobi> redni broj vora nakon kojeg se unosi npr. n
- smjes>> novi vor u listu izmeu n-tog i (n+1)-og

Naziru li se potencijalni
problemi s ovim algoritmom?

Strukture podataka i algoritmi

20 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS UNUTAR JVL LISTE


Algoritam za unos u listu:
- dobi> valjani redni broj vora nakon kojeg se unosi npr. n
- smjes>> novi vor u listu nakon n-tog vora

if (n == 0)
???

Strukture podataka i algoritmi

21 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS UNUTAR JVL LISTE


Razlikujemo dvije vrste unosa unutar liste
- ispred odreenog vora
- nakon odreenog vora

Uz malo lukavstva, svode se na jedan


- ispred n-tog => nakon (n-1)-og
- nakon n-tog => ispred (n+1)-og

Unos nakon podrazumijeva


provjeru rednog broja kojeg korisnik unosi
unos mogu najranije od nultog
unos mogu najdalje do nakon zadnjeg

Strukture podataka i algoritmi

22 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS UNUTAR JVL LISTE


Algoritam za unos u listu:
- pronai traeni vor nakon kojeg unosimo
- ako je unos prije prvog
unos na poetak

- inae
novog postavi5 da pokazuje na sljedbenika
traenog postavi5 da pokazuje na novog

Strukture podataka i algoritmi

23 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS UNUTAR JVL LISTE


Pronalazak n-tog vora radi metoda Nakon() - varijanta, ne mora ovako
- kao parametre metoda prima
pokaziva na listu (head)
cijeli broj nakon kojeg se novi vor unosi (n)

- kao rezultat metoda vraa


pokaziva na pronaeni vor
NULL ako nema dovoljno vorova u lis5 da zadovolji redni broj

Pozivna metoda duna je


- osigura> da se ne proslijedi nega>van broj
- ukoliko je n jednak 0 pozva> funkciju UnosPocetak()

Strukture podataka i algoritmi

24 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

UNOS UNUTAR JVL LISTE


Unos e obavlja> metoda UnosNakon() - na vjebama
- kao parametre prima
pokaziva na listu (head)
pokaziva na novog studenta (novi)

- kao rezultat vraa


nita, ako se koris5 pomona metoda Nakon()
bool vrijednost ako se ne koris5

!
!

!
!

!
!

!
!
!
!
!
!

!
!
!
!
!
!

!
!
!
!
!
!

static bool UnosNakon(ref Student head, ref Student novi, int n)


{
ako je n = 0
!
unesi na poetak
!
vrati istinu
ako je n > 0
!
etaj kroz listu dok ne nae n.ti vor
!
ako ga nae
!
umetni novog izmeu njega i n+1.og
!
vrati istinu
!
ako ga ne nae
!
vrati la
}

Strukture podataka i algoritmi

25 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

ISPIS
Unos bez ispisa je kao juha bez soli
Ispis podrazumijeva
- ispis jednog vora
- ispis svih vorova u lis>
- ispis liste po pola

Strukture podataka i algoritmi

26 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

ISPIS JEDNOG
Ispis tono jednog vora e obavlja> metoda IspisJednog() - na vjebama
- kao ulazne parametre prima
vor koji se ima ispisa5
redni broj vora koji se ispisuje

- kao izlaz ne vraa nita

Parametar redni_broj_vora ima dvostruku ulogu


- ako je 0 tada naznaujemo kako nas zanima samo ispis tog vora, ne i njegov redni broj
- ako je > 0 tada nam je bitno dodatno jo ispisa> i redni broj
- nekada e jedna primjena bi> korisnija od druge, zgodno je ima> obje

Strukture podataka i algoritmi

27 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

ISPIS CIJELE LISTE


Temeljna ideja
- ukoliko je lista prazna, ispisa> poruku o tome
- ukoliko je lista neprazna ispisa> podatke prvog vora
- prei na idui vor i ponovlja> postupak sve dok ne doemo do kraja

Strukture podataka i algoritmi

28 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

ISPIS LISTE PO POLA


Dva su temeljna pristupa
- raunajui broj vorova u lis>
- koristei brzi/spori pokaziva

Strukture podataka i algoritmi

29 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

ISPIS LISTE PO POLA - DULJINA


Temeljna ideja
- odredi> ukupan broj vorova u lis> - n
- ispisa> vorove
od prvog do n/2-tog
od n/2-tog do posljednjeg

- u sluaju neparnog broja jedna polovica je oito dulja

Strukture podataka i algoritmi

30 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

ISPIS LISTE PO POLA - BRZI/SPORI


Temeljna ideja
- uves> dva pokazivaa (brzi i spori) i oba usmjeri> na prvi vor
spori pokaziva pomica5 za po jedan vor prema kraju liste
brzi pokaziva pomica5 za po dva vora prema kraju liste

- pomica> oba pokazivaa sve dok brzi ne doe do NULL


- kada brzi doe do NULL, spori je tono na pola liste
- ispisa> vorove
od prvog do sporog
od sporog do kraja

- u sluaju neparnog broja jedna polovica je oito dulja

Strukture podataka i algoritmi

31 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

PRETRAIVANJE
Temeljna ideja
- utvrdi> kriterij za pretragu
- pronai traeni vor
- vra>> pokaziva na nj

Rezultat pretrage je
- NULL
- traeni vor

Ovisno o jedinstvenos> kriterija, moguce je dobi> vise rezultata pretrage, to


valja uze> u obzir pri njihovom ispisu

Strukture podataka i algoritmi

32 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

PRETRAIVANJE
Ako je kriterij za pretraivanje ma>ni broj, tada su stvari jednostavne.
- uita> mb s >pkovnice
- proeta> kroz listu i utvrdi> postoji li takav mb
ako postoji ispisa5 vor s 5m mb-om
ako ne ispisa5 poruku da takvog nema

Ako je kriterij za pretraivanje ime ili dob, tada su stvari bitno sloenije
- kojeg studenta ispisa>?
prvog u lis5 s 5m imenom
sve u lis5 s 5m imenom

- to vra>> kao rezultat pretraivanja?

Strukture podataka i algoritmi

33 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

BRISANJE
Pod brisanjem vora iz liste podrazumijevamo
- uklanjanje vora iz liste
- oslobaanje memorije koju je taj vor zauzimao za nas radi kovacin po prestanku
izvoenja programa.

Brisa> je mogue
- prvi vor u lis>
- posljednji vor u lis>
- vor unutar liste prema kriteriju
- sve vorove unutar liste prema istom kriteriju

Strukture podataka i algoritmi

34 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

BRISANJE PRVOG VORA U LISTI


!"#$
A

!"#$
A

!"#$
B

Strukture podataka i algoritmi

35 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

BRISANJE POSLJEDNJEG VORA U LISTI


Temeljna ideja
- pronai pretposljednji vor u lis>
- postavi> ga da pokazuje na novog

Strukture podataka i algoritmi

36 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

BRISANJE POSLJEDNJEG VORA U LISTI


!"#$
A

!"#$
A

%"&'(')(*#+'

!"#$
A

Strukture podataka i algoritmi

37 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

BRISANJE UNUTARNJEG VORA PREMA KRITERIJU


Temeljna ideja
- pronai prethodnika traenog vora
- postavi> prethodnika da pokazuje na sljedbenika traenog vora

Strukture podataka i algoritmi

38 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

BRISANJE UNUTARNJEG VORA PREMA KRITERIJU


!"#$
A

!"#$
A

!"#$
A

'("%!)$*+, %#&

'("%!)$*+, %#&

-.&"$/"*+,

-.&"$/"*+,

!"#$
A

Strukture podataka i algoritmi

39 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

BRISANJE SVIH VOROVA PREMA KRITERIJU


Ovisno o postojanju kriterija sve dok je lista neprazna
- ako briemo bez kriterija
ponavlja5 postupak brisanja prvog vora u lis5

- ako je kriterij bitan


ponavlja5 postupak brisanja vora prema kriteriju
mogue je spremi5 i mb-ove upitnih vorova u pomoni niz koji se proslijedi metodi za brisanje

Strukture podataka i algoritmi

40 / 40

Ivan Bilobrk - Odjel za Informa5ku - PMFST

You might also like