vezane liste

40
© Ivan Bilobrk Odjel za Informa5ku PMFST Strukture podataka i algoritmi 2011/2012 STRUKTURE PODATAKA I ALGORITMI Vezane liste Jednostruka linearna

Upload: ivan-ivanic

Post on 20-Dec-2015

235 views

Category:

Documents


2 download

DESCRIPTION

Strukture podataka i algoritmi

TRANSCRIPT

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi 2011/2012

STRUKTURE  PODATAKA  I  ALGORITMI

Vezane  liste  -­‐  Jednostruka  linearna

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

VEZANA  LISTA

• Apstraktna  struktura  podataka  čiji  su  elemen>  međusobno  povezani  jednom  ili  dvjema  vezama.  

-­‐ elemente  zovemo  čvorovima

-­‐ prema  broju  veza  među  čvorovima  liste  zovemo  jednostrukima  ili  dvostrukima

-­‐ u  vezanoj  lis>  svaki  čvor  poznaje  samo  svog  prvog  susjeda

• Listu  je  najlakše  vizualizira>  kao  vlak  s  lokomo>vom  i  vagonima

-­‐ cijeli  vlak  predstavlja  listu

-­‐ vagoni  predstavljaju  čvorove

-­‐ lokomo>va  predstavlja  pokazivač  na  listu

2

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

VEZANA  LISTA

• Pokazivač  na  listu  (lokomo>va)  je  od  iznimne  važnos>  za  listu

-­‐ pokazuje  na  prvi  čvor  koji  pokazuje  na  drugi  čvor  koji  pokazuje  na  treći  čvor...

-­‐ pristup  svim  čvorovima  u  lis>  nije  moguć  bez  ovog  pokazivača

-­‐ 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  kažemo  da  je  prazna

3

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

VEZANA  LISTA

• Čvorovi  u  vezanoj  lis>  sastoje  se  od

-­‐ barem  jednog  podatkovnog  polja  koje  ga  pobliže  opisuje

-­‐ barem  jednog  pokazivačkog  polja  koje  ga  povezuje  s  drugim  čvorovima

‣ ukoliko  je  lista  jednostruko  vezana,  to  pokazivačko  polje  se  obično  zove  next  (slijedeći)  ‣ ukoliko  je  lista  dvostruko  vezana,  osim  polja  next,  postoji  i  dodatno  pokazivačko  polje  a  koje  se  obično  zove  past  (prethodni)

4

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

public Student(string i, int d, int m) { ime = i; dob = d; mb = m; next = null; } }

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

VEZANA  LISTA

• Iako  ne  toliko  važan  kao  head,  i  posljednji  čvor  u  lis>  je  također  bitan

-­‐ ima  i  vlas>to  ime:  tail  (rep)

• Ovisno  o  definiciji  posljednjeg  čvora  u  lis>  moguća  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  

5

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

VEZANA  LISTA

• Obzirom  na  broj  veza  među  čvorovima,  te  na  definiciju  posljednjeg  čvora,  razlikujemo  če>ri  vrste  vezanih  lista

-­‐ jednostruko  vezana  linearna

-­‐ jednostruko  vezana  cirkularna

-­‐ dvostruko  vezana  linearna

-­‐ dvostruko  vezana  cirkularna

6

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

VEZANA  LISTA

• Čemu  uopće  liste  kad  bi  i  nizovi  bili  dovoljni?

• Neke  operacije  nad  nizovima  su  složene

-­‐ umetanje  novog  elementa  između  dva  postojeća

-­‐ dodavanje  novog  elementa  nakon  što  je  “kvota”  popunjena

-­‐ brisanje  postojećeg  elementa

• U  vezanoj  lis>  sve  te  operacije  su  znatno  jednostavnije

• Među>m,  neke  operacije  nad  listama  su  opet  složenije

-­‐ pristup  i-­‐tom  elementu

-­‐ sor>ranje  svih  elemenata

• Što  odabra>?

-­‐ ovisi  o  primjeni!

7

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

VEZANA  LISTA

• Temeljne  operacije  nad  listama  su

-­‐ unos  u  listu

-­‐ ispis  iz  liste  (svih  ili  nekih  elemenata)

-­‐ pretraživanje  unutar  liste

-­‐ brisanje  iz  liste  (jednog  ili  više  elemenata)

• Svaka  od  ovih  operacija  može  se  i  hoće  razmatra>  nad  svim  vrstama  vezanih  lista

8

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  U  VEZANU  LISTU

• Prije  samog  unosa  potrebno  je  prvo  stvori>  novi  čvor  a  to  podrazumijeva

-­‐ odredi>  podatkovna  i  pokazivačka  polja

-­‐ pridijeli>  memorijski  prostor  tom  novom  čvoru

• Najzgodnije  je  to  napravi>  putem  konstruktora

-­‐ prvo  dobi>  sve  podatke  od  korisnika  (ili  od  pozivne  metode)

-­‐ potom  ključnom  riječju  new  stvori>  i  inicijalizira>  novi  čvor  

9

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

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  U  VEZANU  LISTU

• Stvaranje  novog  studenta  obavljat  će  metoda  NoviStudent()-­‐  na  vježbama

-­‐ kao  ulazni  parametar  prima  varijablu  mb  (ma>čni  broj)  i  važno  je  da  ju  primi  kao  referencu

-­‐ kao  rezultat  vraća  tog  novostvorenog  studenta

10

static Student NoviStudent(ref int mb) { dohvati ime studenta dohvati dob studenta! ! ! stvori i inicijaliziraj novog studenta! ! ! povećaj matični broj

vrati novog studenta }

ma5čni  broj  bi  trebao  bi5  jedinstven  o  čemu  vodi  računa  pozivna  metoda

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  U  VEZANU  LISTU

• Jednom  kad  je  novi  student  stvoren,  unos  je  moguć

-­‐ na  početku  liste

-­‐ na  kraju  liste

-­‐ unutar  liste  nakon  nekog  određenog  čvora

• Smisleno  je  napravi>  opću  metodu  za  unos  koja  bi  onda  u  sebi  sadržavala  opcije  koje  bi  korisnik  odabrao  pri  svakom  pojedinom  unosu

• Izrada  ove  sasvim  jednostavne  metode  (switch)  ostavljena  je  za  samostalnu  vježbu

• Iako  su  algoritmi  za  unos  za  svaku  od  če>ri  vrste  vezanih  lista  jednaki  do  na  specifičnost  pojedine  liste,  radi  jednostavnos>  ćemo  u  početku  razmatra>  isključivo  jednostruko  vezanu  linearnu  (JVL)  listu  

11

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  NA  POČETAK  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  slučajno?

• Što  bi  se  dogodilo  ako  bi  se  poredak  obrnuo?

12

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  NA  POČETAK  JVL  LISTE

13

ako  se  redoslijed  operacija  obrne,  katastrofalne  

posljedice  slijede

koje?

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  NA  POČETAK  JVL  LISTE

14

A!"#$!"#$

A

!"#$

B

A

B

!"#$

A

Unos  u  praznu  listu

Unos  u  nepraznu  listu

!"#$

B

A

B

!"#$

B

A

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  NA  POČETAK  JVL  LISTE

• Unos  će  obavlja>  metoda  UnosPocetak()  -­‐  na  vježbama

-­‐ kao  parametre  prima  pokazivače  na  listu  (head)  te  na  novog  studenta  (novi)

-­‐ kao  rezultat  ne  vraća  ništa

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

15

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  NA  KRAJ  JVL  LISTE

• Algoritam  za  unos  u  listu:

-­‐ odredi>  posljednji  čvor  u  lis>

-­‐ usmjeri>  posljednjeg  da  pokazuje  na  novog

16

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  NA  KRAJ  JVL  LISTE

17

Unos  u  praznu  listu

A!"#$!"#$

A

Hm...

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  NA  KRAJ  JEDNOSTRUKO  VEZANE  LINEARNE  LISTE

18

!"#$

A B C

NOVI

!"#$

A B C NOVI

!"#$

A B C

NOVINOVI

!"#$%&"'

A B C

NOVINOVI

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  NA  KRAJ  JEDNOSTRUKO  VEZANE  LINEARNE  LISTE

• Unos  će  obavlja>  metoda  UnosKraj()  -­‐  na  vježbama

-­‐ kao  parametre  prima  pokazivače  na  listu  (head)  te  na  novog  studenta  (novi)

-­‐ kao  rezultat  ne  vraća  ništa

19

Kako  odredi>  posljednji  čvor?

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 }

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  UNUTAR  JVL  LISTE

• Algoritam  za  unos  u  listu:

-­‐ dobi>  redni  broj  čvora  nakon  kojeg  se  unosi  npr.  n

-­‐ smjes>>  novi  čvor  u  listu  između  n-­‐tog  i  (n+1)-­‐og

20

Naziru  li  se  potencijalni  problemi  s  ovim  algoritmom?

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

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

21

if (n == 0)???

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  UNUTAR  JVL  LISTE

• Razlikujemo  dvije  vrste  unosa  unutar  liste

-­‐ ispred  određenog  čvora

-­‐ nakon  određenog  č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  

22

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  UNUTAR  JVL  LISTE

• Algoritam  za  unos  u  listu:

-­‐ pronaći  traženi  čvor  nakon  kojeg  unosimo

-­‐ ako  je  unos  prije  prvog

‣ unos  na  početak

-­‐ inače

‣ novog  postavi5  da  pokazuje  na  sljedbenika‣ traženog  postavi5  da  pokazuje  na  novog

23

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

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  vraća  ‣ pokazivač  na  pronađeni  čvor  ‣ NULL  ako  nema  dovoljno  čvorova  u  lis5  da  zadovolji  redni  broj

• Pozivna  metoda  dužna  je  

-­‐ osigura>  da  se  ne  proslijedi  nega>van  broj

-­‐ ukoliko  je  n  jednak  0  pozva>  funkciju UnosPocetak()

24

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

UNOS  UNUTAR  JVL  LISTE

• Unos  će  obavlja>  metoda  UnosNakon()  -­‐  na  vježbama

-­‐ kao  parametre  prima  

‣ pokazivač  na  listu  (head)‣ pokazivač  na  novog  studenta  (novi)  

-­‐ kao  rezultat  vraća  

‣ ništa,  ako  se  koris5  pomoćna  metoda  Nakon()‣ bool  vrijednost  ako  se  ne  koris5

25

static bool UnosNakon(ref Student head, ref Student novi, int n) { ako je n = 0! ! ! ! unesi na početak! ! ! ! vrati istinu ako je n > 0! ! ! ! šetaj kroz listu dok ne nađeš n.ti čvor! ! ! ! ako ga nađeš! ! ! ! umetni novog između njega i n+1.og! ! ! ! vrati istinu! ! ! ! ako ga ne nađeš ! ! ! ! vrati laž }

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

ISPIS

• Unos  bez  ispisa  je  kao  juha  bez  soli

• Ispis  podrazumijeva

-­‐ ispis  jednog  čvora

-­‐ ispis  svih  čvorova  u  lis>

-­‐ ispis  liste  po  pola

26

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

ISPIS  JEDNOG

• Ispis  točno  jednog  čvora  će  obavlja>  metoda  IspisJednog()  -­‐  na  vježbama

-­‐ kao  ulazne  parametre  prima

‣ čvor  koji  se  ima  ispisa5‣ redni  broj  čvora  koji  se  ispisuje  

-­‐ kao  izlaz  ne  vraća  ništa

• Parametar  redni_broj_čvora  ima  dvostruku  ulogu

-­‐ ako  je  0  tada  naznačujemo  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

27

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

ISPIS  CIJELE  LISTE

• Temeljna  ideja

-­‐ ukoliko  je  lista  prazna,  ispisa>  poruku  o  tome

-­‐ ukoliko  je  lista  neprazna  ispisa>  podatke  prvog  čvora

-­‐ preći  na  idući  čvor  i  ponovlja>  postupak  sve  dok  ne  dođemo  do  kraja

28

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

ISPIS  LISTE  PO  POLA

• Dva  su  temeljna  pristupa

-­‐ računajući  broj  čvorova  u  lis>

-­‐ koristeći  brzi/spori  pokazivač

29

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

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  slučaju  neparnog  broja  jedna  polovica  je  očito  dulja

30

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

ISPIS  LISTE  PO  POLA  -­‐  BRZI/SPORI

• Temeljna  ideja

-­‐ uves>  dva  pokazivača  (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  pokazivača  sve  dok  brzi  ne  dođe  do  NULL

-­‐ kada  brzi  dođe  do  NULL,  spori  je  točno  na  pola  liste

-­‐ ispisa>  čvorove

‣ od  prvog  do  sporog‣ od  sporog  do  kraja

-­‐ u  slučaju  neparnog  broja  jedna  polovica  je  očito  dulja

31

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

PRETRAŽIVANJE

• Temeljna  ideja

-­‐ utvrdi>  kriterij  za  pretragu

-­‐ pronaći  traženi  čvor

-­‐ vra>>  pokazivač  na  nj

• Rezultat  pretrage  je

-­‐ NULL

-­‐ traženi  čvor

• Ovisno  o  jedinstvenos>  kriterija,  moguce  je  dobi>  vise  rezultata  pretrage,  što  valja  uze>  u  obzir  pri  njihovom  ispisu

32

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

PRETRAŽIVANJE

• Ako  je  kriterij  za  pretraživanje  ma>čni  broj,  tada  su  stvari  jednostavne.  

-­‐ učita>  mb  s  >pkovnice

-­‐ prošeta>  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  pretraživanje  ime  ili  dob,  tada  su  stvari  bitno  složenije

-­‐ kojeg  studenta  ispisa>?

‣ prvog  u  lis5  s  5m  imenom‣ sve  u  lis5  s  5m  imenom

-­‐ što  vra>>  kao  rezultat  pretraživanja?

33

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

BRISANJE

• Pod  brisanjem  čvora  iz  liste  podrazumijevamo

-­‐ uklanjanje  čvora  iz  liste

-­‐ oslobađanje  memorije  koju  je  taj  čvor  zauzimao  za  nas  radi  “škovacin”  po  prestanku  izvođenja  programa.  

• Brisa>  je  moguće

-­‐ prvi  čvor  u  lis>

-­‐ posljednji  čvor  u  lis>

-­‐ čvor  unutar  liste  prema  kriteriju

-­‐ sve  čvorove  unutar  liste  prema  istom  kriteriju

34

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

BRISANJE  PRVOG  ČVORA  U  LISTI

35

!"#$

A B C D

!"#$

B C D

!"#$

A B C D

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

BRISANJE  POSLJEDNJEG  ČVORA  U  LISTI

• Temeljna  ideja

-­‐ pronaći  pretposljednji  čvor  u  lis>

-­‐ postavi>  ga  da  pokazuje  na  novog

36

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

BRISANJE  POSLJEDNJEG  ČVORA  U  LISTI

37

!"#$

A B C D

!"#$

A B C D

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

!"#$

A B C

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

BRISANJE  UNUTARNJEG  ČVORA  PREMA  KRITERIJU

• Temeljna  ideja

-­‐ pronaći  prethodnika  traženog  čvora

-­‐ postavi>  prethodnika  da  pokazuje  na  sljedbenika  traženog  čvora

38

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

BRISANJE  UNUTARNJEG  ČVORA  PREMA  KRITERIJU

39

!"#$

A B C D E

!"#$

A B C D

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

E

-.&"$/"*+,!"#$

A B C D

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

E

-.&"$/"*+,!"#$

A B D E

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa5ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  40

BRISANJE  SVIH  ČVOROVA  PREMA  KRITERIJU

• Ovisno  o  postojanju  kriterija  sve  dok  je  lista  neprazna

-­‐ ako  brišemo  bez  kriterija

‣ ponavlja5  postupak  brisanja  prvog  čvora  u  lis5

-­‐ ako  je  kriterij  bitan

‣ ponavlja5  postupak  brisanja  čvora  prema  kriteriju‣ moguće  je  spremi5  i  mb-­‐ove  upitnih  čvorova  u  pomoćni  niz  koji  se  proslijedi  metodi  za  brisanje

40