curs2

Embed Size (px)

Citation preview

  • 5/22/2018 curs2

    1/13

    STRUCTURI DE DATE I ALGORITMI - Curs 2

    STRUCTURI DE DATE

    Conceptul de dat

    n informatic, rin dat, s! "!s!mn!a# un model de reprezentare a informaiei, mo"!$cu car! s! oat! o!ra !ntru a o%&in! noi informa&ii "!sr! f!nom!n!$!, roc!s!$! 'i o%i!ct!$!$umii r!a$!( O datcar! aar! ca o entitate indivizibilat)t "in unct "! *!"!r! a$ informa&i!i ! car!o r!r!#int c)t 'i "in unct "! *!"!r! a$ roc!soru$ui car! o r!$ucr!a# s! num!'t! datelementarsau scalar(

    O dat elementar, ca mo"!$ "! r!r!#!ntar! a informa&i!i, oat! fi ri*it $a ni*!$ $o+icsau $a ni*!$u$ ca$cu$atoru$ui, "in unct "! *!"!r! fi#ic(

    E!m$u "! "at !$!m!ntar ./Dat!$! ot fi ri*at! "in unct "! *!"!r!- logic, o "at oat! fi "!finit ca un tri$!t "! forma 0i"!ntificator, atri%ut!, *a$ori1

    - fizic, ca o #on "! m!mori! "! o anumit $un+im! situat $a o anumit a"r!s a%so$ut 3ncar! sunt m!morat! 3n tim 'i 3ntr-o form s!cific *a$ori$! "at!(Identificatorul !st! un sim%o$ asociat "at!i r!s!cti*! !ntru a o ut!a "istin+! "! a$t!

    "at! 'i !ntru a o ut!a r!f!ri 3n ca"ru$ ro+ramu$ui r!s!cti*(Atributelesunt rori!t&i a$! "at!i 'i r!ci#!a# mo"u$ 3n car! ac!asta *a fi tratat 3n

    ca"ru$ roc!su$ui "! r!$ucrar!( Dintr! atri%ut! c!$ mai imortant !st! atributul de tip4 "!fin!'t!aart!n!n&a "at!i $a o anumit c$as "! "at!, c$as "!finit "u natura 'i "om!niu$ *a$ori$or !ntrucar! sunt r!ci#at! anumit! o!ra&ii s!cific! 'i cr!ia 3i !st! s!cific un anumit mo"!$ "!r!r!#!ntar! int!rn(

    5om *or%i astf!$ "! "at! "! ti 3ntr!+, r!a$, $o+ic, 'ir "! caract!r!, !tc(O "at car! str!a# ac!!a'i *a$oar! ! tot arcursu$ roc!su$ui "! r!$ucrar! s! num!'t!

    sim$u constant, 3n ca# contrar s! num!'t! variabil(O "at constant !st! i"!ntificat rin 3nsu'i *a$oar!a !i, a$tf!$ sus, o "at s! i"!ntificrin forma t!tua$ a *a$orii( Tiu$ un!i "at!, uti$i#at! 3n ca"ru$ unui ro+ram, !st! r!ci#at 3nca"ru$ ro+ramu$ui "! r!$ucrar! rintr-o "!c$ara&i! "! ti c! r!c!"! uti$i#ar!a r!s!cti*!iconstant!, *aria%i$! sau func&ii( n afara atri%utu$ui "! ti, un!i "at! i s! ot asocia 'i a$t! atri%ut!(D! !!m$u r!ci#ia r!r!#!ntrii int!rn! 3nca"rar!a "at!i 3n #ona af!ctat mo"u$ "! a$ocar! a$m!mori!i 0static sau "inamic1, *a$oar!a ini&ia$(

    alorile"at!i ot fi r!ci#at! rin !num!rar! 0tiu$ "! !num!rar! 3n 6asca$1 sau rintr-orori!tat! comun( 5a$ori$! "at!i ot fi num!r! sau *a$ori "! a"!*r sau 'iruri, "! %i&i, !tc(

    Conceptul de structur de date

    D! foart! mu$t! ori 3n r!a$itat!, dateleaar su% forma unor colecii de dateasura unormu$&imi "! "at! ! car! 3ns s-a "!finit o anumit or+ani#ar! m!nit s faci$it!#! r!$ucrar!a( O co$!c&i! "! "at! ! car! s-a "!finit o anumit or+ani#ar!, o numit structur 'i cr!ia 3i!st! s!cific un anumit mo" "! s!$!c&i! 'i i"!ntificar!, oart "!numir!a "! structur de date( Comon!nt!$! un!i structuri "! "at! ot fi i"!ntificat! rin num! 0s!$!c&ia rin num!1 sau

    rin or"in!a ! car! o ocu 3n ca"ru$ structurii 3n conformitat! cu structura !ist!nt(Dac acc!su$ $a o anumit comon!nt a un!i structuri "! "at! s! oat! fac! fr s s! &in

    s!ama "! c!$!$a$t! comon!nt!, *om sun! c structura "! "at! !st! cu acces direct( Un !!m$u!st! ca#u$ unui ta%$ou "! !$!m!nt! $a car! s! oat! acc!sa oricar! !$!m!nt rin o#i&ia sa 3n ca"ru$ta%$ou$ui, "! !( A789

    n sc:im%, "ac acc!su$ $a o comon!nt a structurii s! fac! &in)n" cont "! a$t! c)muri a$!structurii 3n conformitat! cu or"in!a structurii 0rintr-un roc!s "! tra*!rsar!1 atunci *om sun! cstructura !st! cu acces secvenial !!st! ca#u$ unui fi'i!r t!t1(

    Structuri$! "! "at! ot fi cr!at! !ntru m!moria int!rn sau !t!rn 0fi'i!r! ! "iscma+n!tic sau %an"a ma+n!tic ac!st!a oart "!numir!a "! fi'i!r1(

    ;

  • 5/22/2018 curs2

    2/13

    Curs 2 - STRUCTURI DE DATE I ALGORITMI

    Structuri$! int!rn! au un caract!r "! date temporare, !$! "isar o"at cu orir!aro+ramu$ui, 3nc!tar!a acti*it&ii "! r!$ucrar!, iar c!$! !t!rn! au un caract!r "! datepermanente, car! nu s! i!r" o"at cu 3ntr!ru!r!a t!nsiunii "! a$im!ntar!(

    Dac ! $)n+ comon!nt!$! structurii s! 3nr!+istr!a# ! suort 'i a$t! "at! su$im!ntar!car! s mat!ria$i#!#! ! suort r!$a&ia "! or"onar!, atunci structura "! "at! r!s!cti* !st!e"plicit, 3n ca# contrar !st! implicit(

    Structura "! "at! "! ti ta%$ou !st! o structur im$icit $ist!$! $iniar! sim$u 3n$n&uit!sunt structuri !$icit! "! "at!(

    Asura structuri$or "! "at! s! ot !f!ctua mai mu$t! o!ra&ii car! s! r!f!r $a *a$ori$! "at!i'i#abloane> numit!tiuri "! "at!( Mai r!cis, rin ti "! "at! s! 3n&!$!+!

    ? o mu$&im! "! *a$ori? o r!+u$ "! co"ificar! a ac!stora? o mu$&im! "! o!ra&ii "!finit! ! mu$&im!a "at!$or(La r)n"u$ $or, tiuri$! "! "at! ot fi? sim$! - "!scriu "at! car! aar&in unor mu$&imi car! nu sunt r!#u$tat! ca ro"uscart!#ian a$ a$tor mu$&imi( E!m$u integer !pascal$% r!s!cti*int !C$&

    2

  • 5/22/2018 curs2

    3/13

    STRUCTURI DE DATE I ALGORITMI - Curs 2

    ? structurat! - "!scriu "at! car! aar&in unor mu$&imi r!#u$tat! ca ro"us cart!#iana$ a$tor mu$&imi(

    E!m$!

    ;& n $im%a=u$ 6asca$ n $im%a=u$ Ct'pe Rationa$(record t'pedef struct ) int,@

    ,@int!+!r * Rationa$+end

    6rin tiu$ "! mai sus s! "!scri! structura un!i *aria%i$! caa%i$ s r!&in num!r! ra&iona$!(

    2( n $im%a=u$ 6asca$ n $im%a=u$ Ct'pe *!ctor(arra' 7;((;9 of r!a$+ t'pedef float vector,-../+

    6ractica imun! uti$i#ar!a unor structuri a$! "at!$or "! o mar! *ari!tat!, car! nu s!suraun 3ntot"!auna !st! tiuri$! car! ot fi "!scris! rin $im%a=, "! o%ic!i o%&in)n"u-s! rin

    com%inar!a c!$or !$!m!ntar!(0rin structur de date vom 1nelege un ansamblu de date caracterizat prin relaiilee"istente 1ntre ele #i a operaiilor care pot fi efectuate cu datele respective&

    5om numi nodo *aria%i$ de un tip oarecare. D! o%ic!i, ac!st ti !st! structurat( Duca#, t!rm!nu$ no" oat! fi 3n$ocuit cu articol,1nregistraresauentitate.

    n c!$! mai mu$t! ca#uri, >ansam%$u$ "! "at!> car! a$ctui!'t! structura ! a$ctuit "intr-omu$&im! cu un numr *aria%i$ "! no"uri(

    Clasificarea structurilor de date 2I( Structuri de date elementare 2

    - ta%$ouri 0*!ctori, matrici, 'iruri "! caract!r!1

    - 3nr!+istrar!- fi'i!r!(

    II( Structuri de date dinamice2- structura "! ti $ist sim$u 3n$n&uit, "u%$u 3n$n&uit, circu$ar, sti*, coa"- structura "! ti ar%or! ar%ori %inari, ar%ori %inari "! cutar!, ar%ori oar!car!(

    III( Structuri de tip graf 2- +rafuri n!ori!ntat!- ar%ori- +rafuri ori!ntat!(

    Structuri dinamice de date

    Structura de tip list liniar

    3ista liniar!st! o co$!c&i! "! nB !$!m!nt! "! ac!$a'i ti "!numit! noduria$! crorrori!t&i structura$! s! r!f!r $a o#i&ii$! r!$ati*! $iniar! uni"im!nsiona$!(

    Dac n. $ista !st! $ista *i"(Dac nB; s! r!r!#int a;, a2,, an'i fi!car! no" aiaar&in! tiu$ui "! %a#(a;4 rimu$ !$!m!nt an4 u$timu$ !$!m!nt n.$un+im!a $ist!iai-;, ai ai4 succ!soru$ $ui ai-;ai, ai; ai4 r!"!c!soru$ $ui ai;6rincia$!$! o!ra&ii car! s! ot !f!ctua asura !$!m!nt!$or un!i $ist! $iniar! sunt

    urmtoar!$!;1 ins!rar!a unui nou !$!m!nt 3n fa&a !$!m!ntu$ui "! ! o#i&ia i21 surimar!a !$!m!ntu$ui "! ! o#i&ia i1 consu$tar!a !$!m!ntu$ui "! ! o#i&ia i

  • 5/22/2018 curs2

    4/13

    Curs 2 - STRUCTURI DE DATE I ALGORITMI

    F1 sortar!a !$!m!nt!$or $ist!i 3n or"in!a *a$ori$or unui anumit c)m 4 c)m c:!i! 4 r!ci#at "!uti$i#ator

    81 "!scomun!r!a un!i $ist! $iniar! 3n "ou sau mai mu$t! $ist!1 comun!r!a a "ou sau mai mu$t! $ist! $a f!$ or"onat! 3ntr-una sin+urH1 "!t!rminar!a numru$ui "! !$!m!nt! a un!i $ist!/1 cutar!a unui !$!m!nt cu o *a$oar! articu$ar a unui c)m "at1 coi!r!a un!i $ist! $iniar!, "! r!+u$, ! un a$t suort(

    Rar!ori 3ns 3ntr-un ro+ram s! a!$!a# $a toat! ac!st! o!ra&ii( D! ac!!a *om asista $amai mu$t! mo"uri "! im$!m!ntar! a $ist!$or $iniar! 3n func&i! "! rincia$!$! o!ra&ii car! s! *or!f!ctua asura $ist!i $iniar!(

    Eist "ou m!to"! "! a$ocar! a un!i $ist! $iniar!, alocarea secvenial 'i alocarea1nlnuit&

    3iste alocate secvenial2 implementarea listelor liniare folosind tipul tablou

    La ac!st mo" "! im$!m!ntar! no"uri$! $ist!i ocu poziii succesive 1n memorie( Ac!st

    ti "! a$ocar! a fost uti$i#at fr!c*!nt, ori "! c)t! ori s-au uti$i#at *!ctori(n r!r!#!ntar!a $ist!$or rin int!rm!"iu$ tiu$ui ta%$ou, tiu$ $ist s! asimi$!a# cu unartico$ cu 2 comon!nt!

    - o comon!nt fiin" un ta%$ou a$! crui !$!m!nt! *or fi !$!m!nt!$! $ist!i "! "im!nsiun!a$!as astf!$ 3nc)t s oat s con&in c!a mai mar! $ist osi%i$ car! oat! s aar 3nr!s!cti*a a$ica&i!

    - a "oua comon!nt 0c)m1 !st! un 3ntr!+ car! *a r!ci#a o#i&ia 3n ta%$ou a u$timu$ui!$!m!nt a$ $ist!i $iniar!(

    Structura "! "at! car! *a "!scri! o astf!$ "! im$!m!ntar! a $ist!$or $iniar! *a fi

    n $im%a=u$ 6asca$ n $im%a=u$ C

    CONSTlung_max=; # define lungime_max TYPEnod=; typedef nod;lista=RECORD typedef struct { elem:ARRAY[1..lung_max] ofnod; nod elem[lung_max]; ultim:INTEGER; intultim; END; lista;

    ntr-o $ist astf!$ im$!m!ntat, s! ot !f!ctua urmtoar!$! o!ra&ii A"u+ar!a "! noi !$!m!nt! $a sf)r'itu$ $ist!i $iniar!( Ac!ast o!ra&i! s! oat! fac!

    u'or 3ntr-un numr finit "! a'i )n $a com$!tar!a 3n 3ntr!+im! a ta%$ou$ui r!#!r*at $ist!i( Dacs! 3nc!arc ins!rar!a unui nou !$!m!nt 3ntr-o $ist car! a ocuat 3n 3ntr!+im! ta%$ou$ s! *a s!mna$aun f!nom!n numit dep#ire(

    Ins!rar!a unui nou !$!m!nt 3ntr-o o#i&i! "in int!rioru$ $ist!i( Ac!ast o!ra&i!r!suun! "!$asar!a cu o o#i&i! a tuturor !$!m!nt!$or "! ! o#i&ii$! urmtoar! o#i&i!i "!ins!rat sr! sf)r'itu$ $ist!i !ntru a !$i%!ra o#i&ia "! ins!rat, "u car! nou$ !$!m!nt s! *a ins!ra

    ! o#i&ia !$i%!rat( Ac!st roc!s n!c!sit un tim "ir!ct roor&iona$ cu numru$ "! !$!m!nt!(

    F

    sa&iun!uti$i#at

    u$timu$ !$!m!nt

    a$ 2-$!a !$!m!ntrimu$ !$!m!nt

    u$tim

    !$!m

    $un+im!maim

    $ista

  • 5/22/2018 curs2

    5/13

    STRUCTURI DE DATE I ALGORITMI - Curs 2

    t!r+!r!a unui !$!m!nt "! $a sf)r'itu$ $ist!i( Ac!ast o!ra&i! s! oat! fac! cuu'urin& "!cr!m!nt)n" contoru$ u$tim(

    t!r+!r!a unui !$!m!nt "in int!rioru$ $ist!i( Ac!ast o!ra&i! r!suun! c toat!!$!m!nt!$! car! s! af$ "u ac!st !$!m!nt s! *or "!$asa sr! 3nc!utu$ ta%$ou$ui !ntru a ocuasa&iu$ !$i%!rat, "u car! tr!%ui! s s! "!cr!m!nt!#! contoru$ u$tim( Dac s! 3nc!arc surimar!aunui !$!m!nt "intr-o $ist *i", s! *a s!mna$a "!'ir!a ac!stui !$!m!nt rin f!nom!nu$ "!subdep#ire(

    O%s!r*a&i! D!#a*anta=!$! ac!st!i m!to"! "! im$!m!ntar! constau 3n ac!!a c o!ra&ia "!ins!rar!, r!s!cti* surimar!, 3n int!rioru$ $ist!i n!c!sit "!$asri "! !$!m!nt! 'i "!ci o!ra&ii$!sunt in!fici!nt!(

    3iste alocate 1nlnuit

    List!$! 3n$n&uit! sunt c!$! mai fr!c*!nt uti$i#at! structuri "! "at! "u ta%$ouri( E$! of!run m!canism !tr!m "! !fici!nt car! oat! fi uti$i#at 3n mu$t! tiuri "! %a#! "! "at!( List!$! ot

    3n$ocui structuri "! %a# !ntru im$!m!ntar!a a$tor structuri cum sunt sti*!$! sau co#i$!( D! fats! ot uti$i#a $ist!$! 3n$n&uit! aroa! !st! tot un"! s! uti$i#!a# ta%$ouri$! 0cu !c!&ia ca#u$ui 3ncar! a*!m fr!c*!nt n!*oi! "! acc!su$ $a !$!m!nt!$! in"i*i"ua$! a$! $ist!i rin int!rm!"iu$ unuiin"ic!1(

    List!$! 3n$n&uit! nu r!r!#int o so$u&i! uni*!rsa$ !ntru toat! ro%$!m!$! $!+at! "!m!morar!a "at!$or, "ar sunt surrin#tor "! !fici!nt! 'i conc!tua$ mai sim$! "!c)t a$t! structuri

    %in!cunoscut!, cum sunt ar%orii(Eist "ou f!$uri "! a$ocar! 3n$n&uit alocare simplu nlnuit i alocare dublu

    nlnuit(

    -& Alocarea simplu 1nlnuit!st! o structur "! forma

    S!mnifica&ia nota&ii$or fo$osit! !st! urmtoar!a adr-% adr4% adr5...adrnr!r!#int a"r!s!$! c!$or n3nr!+istrri in-% in4% &&&inn r!r!#int informa&ii$! con&inut! "! no"uri, "! a$t natur "!c)t c!$! "!

    a"r!s 6U33- ar! s!mnifica&ia Jnici o a"r!sJ - !$!m!ntu$ !st! u$timu$ 3n $ist(

    Du cum o%s!r*m, fi!car! no", cu !c!&ia u$timu$ui, r!&in! a"r!sa no"u$ui urmtor(ntr-o $ist 3n$n&uit fi!car! !$!m!nt !st! 3ncasu$at 3ntr-o $!+tur(

    4& Alocarea dublu 1nlnuit( A$ocar!a sim$u 3n$n&uit !rmit! arcur+!r!a $ist!i 3ntr-un sin+ur s!ns 0"! $a st)n+a $a "r!ata1 4 3n ca#u$ 3n car! s! "or!'t! ca $ista s oat fi arcurs 3nam%!$! s!nsuri s! uti$i#!a# a$ocar!a "u%$u 3n$n&uit( Aici fi!car! no" r!&in! a"r!s!$!

    r!"!c!soru$ui 'i succ!soru$ui su, a'a cum s! *!"! 3n fi+ura urmtoar!

    D!#a*anta=!$! a$ocrii 3n$n&uit! sunt

    Acc!su$ $a un no" a$ $ist!i s! fac! rin arcur+!r!a no"uri$or car! 3$ r!c!"( Ac!astan!c!sit un !fort "! ca$cu$( Informa&ii$! "! a"r!s, r!#!nt! 3n ca"ru$ fi!crui no" ocu m!mori!(

    A*anta=!$! a$ocrii 3n$n&uit! sunt "at! "! fatu$ c o!ra&ii$! "! a"u+ar! sau !$iminar! aunui no" s! fac rai"(

    8

    6U33 in- adr

    4

    a"r;

    adr- in

    4 adr

    5

    a"r2

    adrn7-

    inn 6U33

    a"rn

    a"r2

    rim

    in-

    adr4

    in4

    adr5

    inn

    null

    a"rn

  • 5/22/2018 curs2

    6/13

    Curs 2 - STRUCTURI DE DATE I ALGORITMI

    E!m$!$! sunt "at! !ntru $ista $iniar sim$u 3n$n&uit, "ar n! !rmit s "!"uc!m mo"u$"! !f!ctuar! a o!ra&ii$or r!s!cti*! !ntru $ist! "u%$u 3n$n&uit!(

    a$ Adugarea unui nod.Ki! $ista

    Dorim s a"u+m "u no"u$ cu informa&ia 5, un a$tu$ cu informa&ia 8(Eta!$! sunt

    S! a$oc sa&iu 3n m!mori! !ntru un nou no" - in"if!r!nt un"!

    S! com$!t!a# informa&ii$! !ntru no"u$ cr!at 4 a"r!sa ac!stuia *a tr!%ui s con&ina"r!sa no"u$ui car! tr!%ui! s-i urm!#! 3n $ist

    S! mo"ific a"r!sa no"u$ui car! r!c!"! no"u$ nou cr!at( A"r!sa tr!%ui! s fi! a no"u$uinou cr!at

    Lista oat! fi ri*itJ a'a cum am fost o%i'nui&i

    b$ tergerea unui nod(6!ntru a !!m$ifica o!ra&ii$! !f!ctuat! 3n ac!st ca# *om fo$osi $ista "! mai sus, $a car!

    't!r+!m a$ "oi$!a no" 0c!$ cu informa&ia 81( Iat !ta!$! Informa&ia "! a"r!s a no"u$ui car! 3$ r!c!"! tr!%ui! s r!&in a"r!sa no"u$ui

    urmtor

    adr4a"r

    2a"r;

    H adr5 6U33

    a"rn

    adr4

    a"r2a"r;

    H adr5

    6U33

    a"rn

    a"rt

    adrt

    a"r2

    a"r;

    8 adr4

    6U33

    a"rn

    H adr5

    a"rt

    adrt

    a"r2

    rim

    8 adr4

    6U33

    a"rn

    H adr4

    a"rt

    adrt

    a"rt

    a"r;

    H adr5

    6U33

    a"rn

    8 adr4

    a"r2

    adr4

    a"r2a"r;

    H adr5

    6U33

    a"rn

    8 adr4

    a"rt

  • 5/22/2018 curs2

    7/13

    STRUCTURI DE DATE I ALGORITMI - Curs 2

    M!moria ocuat "! no"u$ car! urm!a# a fi 't!rs !st! !$i%!rat(

    D! acum, ut!m ri*i $ista a'a cum am fost o%i'nui&i(

    O%s!r*a&ii n ca#u$ a$ocrii 3n$n&uit!, adresele de memorare ale nodurilor consecutive nu sunt

    neaprat consecutive.6!ntru a r!a$i#a ac!st $ucru !st! sufici!nt s ana$i#a&i ca#u$ 't!r+!rii

    unui no" sau ac!$a a$ a"u+rii unui no"N( 6rin a$ocar!a m!mori!i !ntru un no" 3n&!$!+!m r!#!r*ar!a sa&iu$ui n!c!sar m!morriiinforma&ii$or con&inut! "! ac!sta( E*i"!nt, s! oat! a$oca m!mori! "oar "ac !istm!mori! "isoni%i$, a"ic nu !st! ocuat "! a$t! *aria%i$!(

    6rin !$i%!rar!a m!mori!i ocuat! "! un no" 3n&!$!+!m c sa&iu$ ocuat "! ac!sta "!*in!"isoni%i$ - !st! us $a "iso#i&ia ro+ramatoru$ui, !ntru ca, !*!ntua$, ac!sta s fi! "in noua$ocat(

    Est! imortant s fo$osim t!rm!nii cor!ct( D! !!m$u, nu ut!m fo$osi 3n $oc "! Ja$ocar!am!mori!iJ t!rm!nu$ Jcr!ar!a m!mori!iJ, tot a'a cum nu !st! cor!ct s fo$osim 3n $oc "!J!$i%!rar!a m!mori!iJ t!rm!nu$ J't!r+!r! a m!mori!iJ(

    3iste liniare simplu 1nlnuite

    Declararea unei liste liniare simplu 1nlnuite

    6!ntru a i$ustra mo"u$ "! $ucru cu $ist! *om uti$i#! o $ist "! num!r! 3ntr!+i( 6!ntru a"!c$ara o $ist sim$u 3n$n&uit *om uti$i#a o structur "! "at! r!cursi* 3n f!$u$ urmtor

    0ascal2T!"e lista=nod;

    nod=$e%o$d

    info:intege$; u$m:lista;end;

    &a$ "$im:lista;

    6!ntru a "!fini un ti "! "at! $ist 3n$n&uit, 3n 6asca$, sunt n!c!sar! "ou tiuri "! "at!Un ti "! "at! car! s "!fin!asc no"uri$!, numit no" 'i un ti "! "at! !ntru oint!rii ctr! no"urinumit $ista( n $im%a=u$ C s! "!c$ar "ir!ct tiu$ "! "at! structurat LISTA car! con&in! un c)m"!c$arat ca oint!r $a LISTA( Ac!st oint!r urmJ s! int!rr!t!a# ca fiin" oint!r ctr! urmtoru$no"(

    Crearea unei liste simplu 1nlnuite

    5om consi"!ra $ista "!c$arat ant!rior, "! num!r! 3ntr!+i( 6!ntru a cr!a o astf!$ "! $ist,a*!m "ou *ariant! cr!ar!a $ist!i rin a"u+ar!a succ!si* a no"uri$or $a sf)r'itu$ $ist!i sau rina"u+ar!a $or $a 3nc!ut(

    H

    adrt

    a"r2

    a"r;

    H adr5

    6U33

    a"rn

    adr4

    a"r2

    a"r;

    6U33

    a"rn

    H adr4

    C992st$u%t Nod

    'int info; Nod (u$m; ;

    Nod ("$im) (ultim;

    info urm

  • 5/22/2018 curs2

    8/13

    Curs 2 - STRUCTURI DE DATE I ALGORITMI

    arianta I& Crearea listei prin adugarea nodurilor la sf:r#it

    6!ntru a r!a$i#a ac!ast o!ra&i!, !st! n!c!sar un oint!r numit ultim, "u car! s! *aa"u+a fi!car! no" nou cr!at( Ini&ia$, $ista !st! *i", "!ciprim'i ultimsuntNULL( 5om numinouno"u$ curr!nt car! s! *a a"u+a( Aoi, "u fi!car! no" nou a"u+at, ac!sta "!*in! ultim(6oint!ru$prim*a in"ica 3ntot"!auna a"r!sa rimu$ui no" "in $ist, !$ fiin" n!c!sar !ntruacc!sar!a !$!m!nt!$or "in $ist(

    5om consi"!ra $ista format "in n !$!m!nt!( La ac!st mo" "! cr!ar! a $ist!i, rimu$ no"tr!%ui! cr!at s!arat!, "!oar!c! c!$!$a$t! n-; no"uri s! *or a"u+a "u u$tim( La 3nc!ut u$timtr!%ui! s fi! ac!$a'i cu rim

    n continuar! s! ot a"u+a no"uri "u u$tim( 5om !!m$ifica !ntru a$ "oi$!a no",r!stu$ "! no"uri s! a"au+ 3n ac!!a'i mani!r6as( ; S! a$oc m!mori! !ntru no"u$ nou

    6as 2( S! cit!'t! informa&ia "in nou$ no", "! !!m$u H(

    6as ( ou$ no" s! *a a"u+a ca urmtor "u u$tim, iar !$ 3nsu'i nu *a a*!a a$t urmtor0"!ocam"at1

    6as F( Din ac!st mom!nt 3n $ist no"u$ cu informa&ia H *a fi u$timu$

    n continuar! s! r!!t ac!$!a'i o!ra&ii !ntru r!stu$ "! !$!m!nt!(Est! r!#!ntat func&ia car! !rmit! ac!ast mo"a$itat! "! cr!ar! a un!i $ist! $iniar! sim$u3n$n&uit!

    *oid %$ea$e +, ' int i)n; %out--n=;%in//n; "$im=ne0 Nod; %out--int$odu%eti *aloa$ea $etinuta in "$imul nod:; %in//"$im/info;

    /

    info urmULL

    rimu$tim

    info urmULL

    rimu$tim

    nou

    info urmULL

    rimu$tim H

    nou

    info urm ULLrimu$tim H

    nou

    info urm ULLrimu$tim H

    nou

    u$tim

  • 5/22/2018 curs2

    9/13

    STRUCTURI DE DATE I ALGORITMI - Curs 2

    "$im/u$m=N233; 44la %$ea$ea listei *a exista un singu$ nod) "$imul 44 si "$in u$ma$e ad$esa u$matoa$e lui este N233 ultim="$im; 44e*ident) a*and un singu$ element a%esta *a fi si "$imul 44 si ultimul fo$+i=5;i-=n;i66, 'Nod (nou;

    nou=ne0 Nod; %out--*aloa$ea de adaugat in lista ; %in//nou/info; ultim/u$m=nou; 44se agata noul nod nou) du"a ultimul din lista ultim=nou; 44e*ident noul nod e ultimul... ultim/u$m=N233;44 si du"a ultimul nu e nimi%) de%i ni%i o ad$esa

    arianta II& Crearea listei prin adugarea nodurilor la 1nceput

    Ac!ast *ariant !st! mai sim$ "!oar!c! nu n!c!sit cr!ar!a s!arat a rimu$ui no"(

    6as ;( Ini&ia$ rim.ULL

    6as 2( S! a$oc m!mori! !ntru un nou no", in"if!r!nt "ac !st! *or%a "! rimu$ no" "in $ist sau"! oricar! a$tu$( Oricum, !$ *a "!*!ni rim, "!oar!c! $a fi!car! as no"u$ nou s! a"au+ 3n fa&(

    6as( S! cit!'t! informa&ia "in ac!st nou no"

    6as F( S! fac! $!+tura "intr! nou$ no" 'i rimu$ 0nou 3$ *a a*!a ca urmtor ! rim1

    6as 8( Din ac!st mom!nt nou$ rim *a fi no"u$ nou(

    6a'ii 2, , F 'i 8 s! r!!t 3n mo" i"!ntic, "u cum urm!a#

    6as 2, s! a$oc m!mori! !ntru un nou no" 'i s! cit!'t! informa&ia "in ac!st nou no"

    6as F S! fac! $!+tura "intr! nou$ no" 'i rimu$ no"

    rim

    rimnou

    rim.ULLnou /

    rim.ULL

    nou /

    rim .ULLnou /rim

    ULLnou /rim

    Fnou

    ULL/rim

    Fnou

  • 5/22/2018 curs2

    10/13

    Curs 2 - STRUCTURI DE DATE I ALGORITMI

    6as 8( Din ac!st mom!nt nou$ rim *a fi no"u$ nou(

    6r!#!ntm 3n continuar! o func&i! !ntru ac!st mo" "! cr!ar! a$ $ist!i

    *oid %$ea$e+,' int i)n; Nod (nou;

    %out--n=;%in//n; "$im=N233; fo$ +i=1;i-=n;i66, ' nou=ne0 Nod; %out--int$odu%eti *aloa$ea $etinuta in nodul :--i; %in//nou/info; nou/u$m="$im; "$im=nou;

    N

    Ana$i#)n" c!$! "ou mo"a$it&i "! cr!ar! a un!i $ist! $iniar! sim$u 3n$n&uit!, *om constatac *arianta a "oua !st! mai sim$ "!c)t rima "!oar!c! nu mai n!c!sit uti$i#ar!a unui oint!rsu$im!ntar 0u$tim1 "u car! s s! a"au+! no"uri$! 'i nu mai !st! n!c!sar cr!ar!a s!arat a

    rimu$ui no"( n func&i! "! c!rin&!$! concr!t! a$! a$ica&i!i s! *a a$!+! una "intr! c!$! "ou*ariant!(

    0arcurgerea elementelor unei liste simplu 1nlnuite

    O!ra&ia "! arcur+!r! a un!i $ist! 3n$n&uit! !st! fr!c*!nt uti$i#at( 6in ac!ast o!ra&i! s!ot !f!ctua "i*!rs! r!$ucrri asura tuturor !$!m!nt!$or $ist!i 0"! !!m$u s! ot afi'a1( S! oat!uti$i#a un oint!r car! s r!r!#int! 3ntot"!auna no"u$ curr!nt car! s! *a r!$ucra( Ini&ia$ .rim(

    Du r!$ucrar!a unui no" oint!ru$ s! *a "!$asa $a urmtoru$ no" "in $ist, ca 3n fi+uraurmtoar!

    6as ;

    6as 2

    ;

    ULL/rim

    Fnou

    rim

    2 H ; F

    rim

    2 H ; F

    rim

    ULL

    ULL

  • 5/22/2018 curs2

    11/13

    STRUCTURI DE DATE I ALGORITMI - Curs 2

    U$timu$ as

    Est! r!#!ntat o astf!$ "! functi! car! !rmit! tra*!rsar!a tuturor !$!m!nt!$or un!i $ist! 3n*!"!r!a afi'rii informa&i!i uti$! "in $ist

    *oid lista$e+, 'Nod ("; "="$im; 07ile+"8=N233,44%at tim" nu sa a9uns la sf. listei '%out--"/info-- ; "="/u$m;44se a*anseaa in lista t$e%and la u$matoa$ea ad$esa %out--endl;

    O a$t o!ra&i! "! %a# car! s! oat! fac! asura un!i $ist! $iniar! sim$u 3n$&uit !st!operaia de cutare a unui nod cu o anumit c;eie dat( Ac!ast o!ra&i! !st! un ca# articu$ar"! tra*!rsar! 0arcur+!r!1, car! 3ns oat! fi 3nc:!iat 3n mom!ntu$ 3n car! s-a +sit no"u$ cutatS r!suun!m c s! "or!'t! cutar!a unui no" cu informa&ia .H 3n $ista r!c!"!nt( S! *a 3nc!!cutar!a "! $a rimu$ no", iar 3n mom!ntu$ 3n car! s-a +sit informa&ia cutat roc!su$ "!tra*!rsar! s! *a ori( Eist osi%i$itat!a ca informa&ia cutat s nu fi! +sit, ca# 3n car!tra*!rsar!a s! 3nc:!i! a%ia "u arcur+!r!a tuturor !$!m!nt!$or $ist!i( O func&i! car! fac! o astf!$"! cutar! !st! r!#!ntat 3n continuar!, !a r!turn)n" o#i&ia "in $ist 3n car! s-a +sit informa&iacutat( Dac informa&ia nu !st! +sit func&ia r!turn!a# *a$oar!a (

    int %auta+int x,

    ' Nod ("; "="$im; int i=; 07ile +"8=N233

  • 5/22/2018 curs2

    12/13

    Curs 2 - STRUCTURI DE DATE I ALGORITMI

    6as 2(S! a$oc m!mori! !ntru un no" nou 'i s! intro"uc! informa&ia "orit 3n nou$ no" cr!at

    6as ( S! r!fac $!+turi$! 3ntr! nou$ no" cr!at 'i no"u$ "! ! o#i&ia P-;, r!s!cti* c!$ car! urm!a#"u ac!sta(

    n ac!ast !ta tr!%ui! &inut cont "! or"in!a r!fac!rii ac!stor $!+turi( Astf!$ rima$!+tur car! tr!%ui! fcut !st! c!a 3ntr! no"u$ nou 'i c!$ car! *a urma "u !$ 0aici no"u$ cuinforma&ia uti$ ;1, o!ra&i! notat cu 0;1( A%ia "u !f!ctuar!a ac!st!i $!+turi s! *a ut!a fac!$!+tura 3ntr! no"u$ "! ! o#i&ia P-; 'i no"u$ nou, o!ra&i! notat cu 021( n ca# contrar, s! oat!

    i!r"! $!+tura cu r!stu$ $ist!i 0car! 3nc nu a fost arcurs1(

    Est! r!#!ntat 3n continuar! o func&i! numit inse$a$e, car! im$!m!nt!a# ac!st!o!ra&ii

    *oid inse$a$e+int x)int , ' int i;Nod (")(nou; nou=ne0 Nod; nou/info=x; if +==1, 'nou/u$m="$im; "$im=nou; else '

    "="$im;i=1;07ile+i-1 oitia ---- nu este in lista;else' nou/u$m="/u$m;

    "/u$m=nou;

    =tergerea unui nod cu o anumit informaie

    6r!suun!m c "in $ista ant!rioar s! 't!r+! no"u$ cu informa&ia P.H( 6!ntru a ut!a

    !f!ctua ac!ast 't!r+!r!, ini&ia$ s! fac! o cutar! 3n $ist a informa&i!i P aoi s! r!fac $!+turi$!(Eist situa&ii car! tr!%ui! tratat!4 Informa&ia car! s! 't!r+! !st! con&inut c:iar 3n rimu$ no"4 Informa&ia car! s! 't!r+! !st! 3n a$t no" "if!rit "! rimu$ no"4 Informa&ia car! s! 't!r+! nu !ist 3n $ist(

    ;2

    2 H ; F

    rim

    ULL

    2 H ; F

    rim

    ULL

    2 H ; F

    rim

    ULL

    0;1

    021

  • 5/22/2018 curs2

    13/13

    STRUCTURI DE DATE I ALGORITMI - Curs 2

    Est! r!#!ntat 3n continuar! situa&ia 3n car! informa&ia car! s! 't!r+! !st! 3n int!rioru$$ist!i( n roc!su$ "! cutar! !st! n!c!sar s s! str!#! a"r!sa no"u$ui r!c!"!nt c!$ui car! *a fi't!rs, "!oar!c!, rin int!rm!"iu$ su s! fac! $!+tura cu c!$ car! urm!a# "u no"u$ cu informa&iaP(

    6as ;( S! caut no"u$ cu informa&ia P, str)n" a"r!sa r!c!"!ntu$ui ac!stuia, 3n oint!ru$ @(

    6as 2( S! r!fac $!+turi$! astf!$ 3nc)t no"u$ cu informa&ia P s nu mai fac art! "in $ist(

    6as ( S! !$i%!r!a# m!moria ocuat "! no"u$ cu informa&ia P(

    Kunc&ia r!#!ntat 3n continuar!, !rmit! 't!r+!r!a unui no" cu informa&ia P( S-a r!*#ut'i ca#u$ 3n car! informa&ia P nu !st! +sit 3n $ist 'i c!a 3n car! informa&ia !st! c:iar 3n rimu$ no"(

    *oid ste$ge$e+int x,' Nod (")(?; "="$im; ?=N233; 07ile +"8=N233