1.

VARIABLAT DINAMIKE
Variablat dinamike nuk definohen dhe nuk thirren me emra. Me deklarimin e tyre nuk rezervohet hapësirë në kujtesë, pasi më parë nuk dihet as numri as rradha në strukturën dinamike, por se variabla dinamike mund të përdoret në program. Nëse me deklarim nuk rezervohet hapsirë kujtese për variablen rezervohet kujtesa e saj dhe kjo adresë në fillim nuk është e definuar. Variablat dinamike thirren me ndimën e treguesve (ang .pointer-ve shënjuesve! "ilët formohen krahas me formimin e variblasës.Variablat dinamike me treguesit (pointerët! përkatës , #uhen variabla treguese. $ërmes tyre shkruhen struktura dinamike komplekse, si% janë listat, pemët dhe grafet. &reguesi ($ointeri, shënjuesi! është variabël spe"iale e "ila përmban adresën e kujtesës të variables dinamike. 'ipas ksaj , me definimin e variables dinamike ne definojm treguesin (pointerin! ,e jo vetë variablen.Variables treguse iu #aset vetëm me ndimën e treguesit (pointerit! (allojm defini"ionin type të tipit të variablës treguese. Variabla &reguse(pointer! definohet në mënyrën si në vazhdim)

^

emri-itipit-tëvariablës

ku shenja * është për variablën dinamike . &ipi i variablës dinamike mund të definohet, p.sh si) Type &regues + *,lement; -'henjues+*Nyje. ,lement+Record $ermbatja:&ipiVariables; &jetri:&regues End/ Mund të vrehet #ë tipin e variables e definojm si rekord një fushë e së "ilit është përmbatja e informa"ionit, ndërsa &jetri tregues kah rekordi tjetër)
përmbatja e informacionit

tjetri

ku tjetri është emri për fushën e "ila përmban treguesin. Nëse tipi i variabës është nuk është integer ,real, boolean ose char ajo për"aktohet në programin kryesor. (uhet vrejt #ë defini"ioni i tipit të treguesit mund ti paraprij defini"ionit të tipit të tij referent, si% edhe është shkruar në shembull) &reguesit në mënyrë të zakonshme deklarohen në seksionin për deklarim të variablave $.sh

0smail (ashi

1223 41225

6

Var p,# : &regues/ kështu definohet variabla e "ila mund të përdoret #ë të tregoj në variablat të "ilat krijohen dinamitikisht.

&reguesit janë variabla statike, ndërsa variablat në të "ilat këto tregojn janë dinamike. 7to janë të lidhura për tip të "aktuar të variablës dinamike dhe mund të tregojnë në variablë e këtij tipi. 'ipas kësaj ,dallimi është i dukshëm ndërmjet treguesit (p! dhe variablës dinamike, rrespektivisht varibles treguese (p^). Në bazë të kësaj, #ë u tha mund të konstatojmë se mund të përdoret variabla p^ edhe pse nuk është deklaruar Shembull) Nëse duhet definuar dy tregues(pointer!, një për variablën reale (p ! dhe tjetrën për variablën e tipit rekord (p!! kjo mund të bëhet në mënyrën si në vazhdim kështu) Type 8ekord+Record 9usha6:"nte#er/ 9usha1:Real/ End/ &regus8ek + *8ekord/ &regus8eal + *8eal/ Var p : &regus8eal ; p! : &regus8ek ;

0smail (ashi

1223 41225

1

Me definimin e variabës dinamike automatikisht nuk ndahet adresa e kujtesës për variablën përkatse . :o vatëm se për %do variabël dinamike, #ë duhet rezervohet kujtesë ,duhet për"aktohet edhe vendi i saj në strukturë, respektivisht rradhën me të "ilën kësaj iu ndahen vlerat gjatë rrjedhës së ekzekutimit të programit.Variablat treguse formohen me ndimën e pro"edurës standarde ) $e%&p); ku p është treguesi i variblës së re. Me këtë në strukturën dinamike rezervohet hapsirë kujtese për variablen e re në të "ilën tregon treguesi me veten e tij. 'ipas kësaj , vlera e treguesit është në të vërtet adresa e variablës dinamike e "ila formohet. 'hihet se pro"edura ne%&p) ekzekutohet ashtu #ë rezervon hapsirë kujtese për variablën p^ dhe adresa e hapsirës së rezervuar të kujtesës iu ndahet treguesit p. $as urdhërit $e% adresa e variablës dinamike mund ti ndahet edhe me ndarjen e vlerave tjera me tregues. &urbo $a"ali për këtë #ëllim përdor operatorin e adresave( '-at! dhe funksionin addr.

0smail (ashi

1223 41225

3

&e shprehjet në të "ilat para#itet edhe operatori i adresave ë ,ekzekutimi i tij është me prioritet të njejtë me operatorin logjik Not 6. ; Not 1. < 4 mod div 7nd/ 3. = - >r ?or 5. @ @+ A+ A @A 0n Burse për operatorët e grupuar në një rang vlenë prin"ipi i ekzekutimit duke shkuar nga e majta në të djatht.

0smail (ashi

1223 41225

5

(y ose më shumë tregues mund të tregojnë në të njejtën variabël. $.sh

Type &regues( ^"nte#er; Var p6,p1 :&regues; ... $e%(p !; p!:(p ;
p

p!

Variabla dinami*e

urdhëri p!:(p shpreh faktin se vlera e treguesit p iu ndahet tregusit p!, rrespektivisht treguesi p! tregon në të njejtën variabël si dhe treguesi p . Me ekzekutimin e pro"edurës $e%&p) nuk iu ndahet vlera e variables , por se vetëm vendoset lidhja ndërmjet variables dhe tregusit. Variblës dinamike mund ti ndahet vlerë me ekzekutimin e urdhërit read dhe readln ose me ekzekutimin e urdhërit për vlerë dhënie. Mundet #ë vlera e njërës variabël treguese tCju ndahet tjetrës dhe të testohen se a janë të barabarta ose të ndryshme Shembull: 17.2 (uhet definuar variblën dinamike, treguesi i së "ilës është p dhe asaj ti ndahet vlera ).) Type &regues + *Real; Var p :&regues; ... $e%(p! ... p:().)

+

+

p

).)

Variabla dinami*e

0smail (ashi

1223 41225

D

Me dhënjen e urdhërit p!^:(p ^ iu ndahet vlera e variables dinamike p ^ variables p!^. Easja e përmbajes në fushën e variables dinamike mundsohet me dhënjen) p^.emrivariables ku p është emri i treguesit ndërsa emri variables është emri i fushës në të "ilën ruhet variabla dinamike. $.sh Variabla dinamike , mund të le?ohet me urdhërin) Readln&p^.,); nëse vlera aktuale e treguesit p tregon në variablën ,. Nëse më tutje nuk është e nevojshme variabla dinamike gjat rrjedhës së ekzekutimit të programit mund të fshihet me pro"edurën standarde) -ipose&p); Me ekzekutim e ksaj pro"edure ndërpritet lidhja ndërmjet variables dinamiken &p^) dhe treguesit të saj, kështu #ë më tutje variables nuk mud tju #aset. 'e loka"ioni i kujtesës me fshirje të tillë të variablës do të jetë i #asshëm për ekzekutim të sërishëm në program varet prej verzionit të pas"aklit në përdorim. Bompilatorët (përkthyesit! më të mirë, loka"ionet të "ilat lirohen pas ekzekutimit të urdhërit -ispose i ky#in sërisht në hapsirën e lirë të kujtesës

&reguesi mund të ketë vlerën spe"ifike nil e "ila don të thotë se ai nuk tregon në asgjë. &reguesi me vlerë nil është tregues i listës të zbrazët, ndërsa përdoret #ë #ë ta shenoj fundin e listës me urdhërin 0smail (ashi 1223 41225 F

"f p+ $il Then... testohet fundi i listës

2. Listat e ndërlidhura
&reguesit janë të përshtashëm për krijmim e strukturarave dinamike të ndërlikuara dhe fleksibile ( si dhe rekururzive! të të dhënave. 'trukturat dinamike janë fleksibile pasi leht i iu shtohen dhe iu fshihen të dhënat në "ilin do vend në struktur. Bur e dhëna duhet shtuar, krijohet treguesi i ri i "ili atë e lidhë në vendin e dëshiruar ashtë #ë ajo bëhet element i strukturës. Bur më tutje nuk duhen fshihet treguesi dhe edhëna prej saj hi#et(largohet!. 9ormat themelore të strukturave dinamike janë listat e ndërlidhura. $ërmes tyre realizohen ste*-et dhe rend-et. Bëto lista janë lista lineare. Ve%ori e përbashkët e tyre është se këto kanë vetëm nga një tregues. Me strukturat dinamike mund të formohet struktura ekujvalenete me #rafet, ku në këtë rastë variablat paresin nyjet, ndërsa treguesit de#ët. Gjithashtu mund të formohen struktura pemë , si një tip spe"ial i grafit. Histat e ndërlidhur e përbëjnë më shumë variabla dinamike ndërmjet veti të lidhur të treguesve. Hista në mënyrë grafike mund të para#itet në mënyrën si në vazhdim)

fillimi

nil . .!

...

.n-

.n

'e"ili element i listës përbëhet prej dy pjesëve. Njëra është përmbatja e variablës ndërsa tjetra është treguesi "ili tregon në elemnetin tjetër (pasardhës! . $ër këtë arsye listat e ndërlidhura realizohen si rekorde te të "ilët një fushë përmban vlerën e treguesit, ndërsa të tjerat për"aktojnë përmbatjen e listës. &e gjuhët programuese të "ilat nuk përkrahin struktura dinamike të të dhënave , listat mund të realizohen duke përdor vargje rekordesh ose vargje paralele. &regues i posa#ëm tregon në elementin e parë të listës , pasi përmban adresën e tijë. &reguesi i se"ilit element, pos të fundit përmabn adresën e elementit tjetër. Vlera e tregusit të fundit është nil dhe ai për"akton fundin e listës.

2.1. Formimi i lstës
Eë të mund tIi përdorim listat duhet të dim se si listat formohen dhe fshihen dhe si iu #asemi elementeve të listës. 7lgoritmi i formimit të listës është di%ka më kompleks për shkak të nevojës #ë posa#ërisht të zgjidhet problemi i dhënjes së elementit të parë, më

0smail (ashi

1223 41225

J

pas të tjerëve(pasardhës! dhe në fund të fundit, Ngjajshëm është edhe me largimin (hi#jen,marrjen! e elementeve nga lista. Eë të formohet lista e ndërlidhur është e nevojshme tCiu definohen tre tregus dhe ekzekutimi i disa hapave tregusi i parë tregon në elementin e parë në list (kur lista është e zbrazët ai do ta ketë vlerën nil!. &regusi tjetër(pasardhës! tregon në elementin paraprak të "ilës i shtohet variabla dinamike ndërsa i treti në variablën tjetër( pasardhëse! dinamike e "ila duhet shtuar listës .Eë të mund të formohet lista me numër sipas dëshirës me të dhëna duhet bërë hapat vijues) . duhet ini"ializuar treguesin e parë/ !.duhet ti jepet e dhëna në vendin në të "ilin tregon tregusi i parë/ /.Më pas duhet ini"ializuar tregusin paraprak dhe vendos atë ashtu #ë të tregoj në vlerën e të dhënës së parë në list. &ani #ë të dy treguesit tregojn në elementin e parë të listës

ipari

.
parapra* **

2

0. Nëse ka akoma të dhëna me iu shtu listës , duhet ini"ializu tergues tjetër dhe më pas futjen e të dhënës në listën e elementit tjetër në listë. Në të njetën kohë duhet vendosur vlerën treguesin e mëpërashëm ashtu #ë të tregoj në elementin tjetër.

ipari

.
parapra* ** tjetri

.!

2

1. Në hapin tjetër vlera e tregusit tjetër duhet nda tregusin paraprak ashtu #ë të dy treguesit tani tregojnë në elementin e vargut aktual të fundit .

0smail (ashi

1223 41225

K

ipari

.
parapra* ** tjetri

.!

2

3. Nëse më tutje nuk ka elemente të "ilët duhet shtuar në listë, duhet nda vlerën nil treguesit të fundit të dhënave (të variblës dinamike! në listë.

ipari

.
parapra* **

.!
tjetri

.. .
.n.n nil

Bëta hapa përshkruhen me pro"edurën si në vazhdim në gjuhën $as"al)

0smail (ashi

1223 41225

L

0smail (ashi 62

1223 41225

Hista formohet me ekzekutimin e pandërprer të pro"edurës ne%. $ara ekzekutimit të parë tregusi ka vlerën nil dhe tregon në list të zbraztë. $ër %do ekzekutim të pro"edurës rezervohet vend në kujtesë për vlerën të variblës tjetër, ndërsa treguesit i ndahet adresa e tijë. Bur të përfundoj formimi i listës treguesit iu ndahet vlera nil.

2.2. htimi dhe !shir"a e elmente#e të listës
Bur të shtohet elementi i ri në listën e ndërlidhur duhet ndryshuar dy tregues, paraprak dhe tjetri. $araprak është treguesi i "ili paraprin terguesit tjetri.

0smail (ashi 66

1223 41225

. .!

.iri ./ .0 nil

4i# 5 kur fshihet elmenti nga lista duhet vetëm ndruar vlera e treguesit paraprak

. .! nil ./

4i# 6

.0

nil

.iri . 2

.iri .

ipari(a*t7al^.p a*t7al :(ipari 4i# ) 0smail (ashi 61

(kur është a*t7al^.p 8ipari^.p ose lista është e zbtazët!

1223 41225

Bur elemeti i shtohet listës , d.m.th. kudo %oftë pos në fillim ose në fund ekzekutohet pro"edura si në vazhdim.

.i .iri 2 .i9

.i .iri

.i9 +arapra*^.p(a*t7al^.p a*t7al :(parapra*^.p 4i# Bur lementi jepet në fund të listës kzekutohet pro"edura në vazhdim )
nil

(kur është a*t7al^., 8tjetri^., ose lista është e zbtazët!

parapra*

.n .iri 2

.n .iri

a*t7al

nil

parapra*^.p(a*t7al^.p a*t7al^.p :(parapra*^p 4i# !

(kur është parapra*^.p (nil!

këta hapa përshkruhen me pro"edurën në $as"al si në vazhdim)

0smail (ashi 63

1223 41225

9shirja e elementeve nga lista është pro"edura e njetë me pro"edurën e shtimit. 'Ipari futet vlera e "ila duhet fshir dhe memorizohet si variabël e madhësisë(?m!. Gjatë ekzekutimit të pro"edurës të fshirjes lajmrohet pro"edura mbi gabimin nëse është MmA tjetri d.m.th. nëse variabla nuk është në listë. 9shirja e elementit të parë nga lista )

0smail (ashi 65

1223 41225

ipari

. .! ./

. .!

./ ipari^.p(ipari (kur është ,ne 8ipari^.,t! 4i# / 9shirja e elementit ndërmjet të parit dhe të fundit)

parapra* tjetri

.i.i .i9

.i.i

.i9 tjetri^.p(parapra*^.p 4i# 0 9shirja e elementit te fundit nga lista)
nil

(kur është Mm 8tjetri^., !

parapra*

.n.n 2

.n.n nil

tjeri

tjetri^.p(para*ra*^.p 4i# 1

(kur është.m(tjeril^.p dhe tjetri.p (nil!

0smail (ashi 6D

1223 41225

kërkimi në listën e ndërlidhur mund të jetë komplese, pasi përdoren unazat të "ilat përfundojn posa të gjejnë elementin e parë. Në këso raste përdret variabël e posa%me për dalje nga kriteriumi dalës, ashtu #ë ti iket për"aktimit gabim të fundit të listës. Në listat lineare mundet direk të #asemi vetëm elementit të parë në listë, ndërsa elementeve të tjerë duhet #aur në mënyrë sekuen"iale në rradhë në të "ilën ato ndërmjet veti janë të lidhur.

nëse kërkohet të fshihet elementi me emër të "aktuar , pro"edura duhet të ndryshoj si në vazhdim) 0smail (ashi 6F 1223 41225

"f tjetri*.emr i + IemriI Then

2.$. Listat e ndërlidhura %i&li&e
&ek listat e ndërlidhura "iklike elementi i parë dhe i fundit janë të lidhur në unazë. Bëto e kanë të për"aktuar fillimin por jo dhe fundin, sipas kësaj elementi i fundit nuk ka vlerën e tregusit nil por fusha e treguesit përmban adresën e elementit të parë. Vetëm nëse lista është e zbrazët treguesi i parë ka vlerën nil. 'humë sisteme operative kanë shumë aplika"ione me lista të ndërlidhura "iklike. $.sh nëse, kur përdorim kompjuterin në punë interaktive, se"ilën herë kur shfrytëzuesi hynë në sistem(lo# in! ai shtohet në listë, dhe se"ilën herë kur ai del prej sistemit (lo# off! shfrytëzuesi fshihet. Hista është e renditur pasi shfrytëzuesi shtohet në fundë. &ë dhënat mbi shfrytëzuesin , numrin e tij dhe rradhën e ky%jes ruhet në listën e ndërlidhur "iklike.
fillimi

... 4i# 3

2.'. Listat me ndërlidh"e të d(!isht
Në disa zbatime në listat e ndërlidhura nevojitet #ë të dhënat të jenë të lidhuar ashtu #ë të mund ti kërkojmë në të dyja drejtimet. Eë kjo të mund të realizohet një lidhje e tillë se"ili element duhet ti ketë dy tregues, në #ë tregon në elementin tjetër(ardhshmin! tjetri #ë tregon në ate paraadhës(paraprak!. &e këto lista elementi i fundit në njërën kahje dhe i fundit në kahjen tjetër (d.mth në të parin! kanë vlerën e treguesit nil.
fillimi

.

nil
.! nil .n-

... 4i# :

kur futen ose fshihen elementet e listave të ndërlidhura dyfish sIështë e thënun #ë kërkimi të filloj nga fillimi por nga elenti aktual, para ose brapa varsisht prej rezulltatit të të krahasimit të elementit aktual dhe atij të ri. Bështu shpejtohet i përpunimi por pro"edurat për kërkim janë di%ka më të ndëlikuara dhe në sesion nuk do të mirremi. 0smail (ashi 6J 1223 41225

)(t"e dhe det(ra
K.
$ërmbtja e informa"ionit Hidhjet (teguesit në elementet e tjerë! Nuk ka element pasardhes

fillimi

nil :) /6 51

&reguesi në elemetin e parë Type &regues(^,lement ,lement + Record ?)0nteger; p:&regues End; Var 0pari,tjetri, paraprak)&regues/

f7nd

$ër ta shtuar një element në krye të listës $.sh në shembullin tonë D NeN(ipari!/ ipari*.? :+D/ paraparak :+ ipari/ NeN(tjetri!/ &jetri*.? :+3L/ $araprak*.p :+ tjetri/ parapark :+ &jetri/ L. Oshtë dhënë lista e ndërlidhur)

fillimi

nil 1 ) !)

f7nd duhe

0smail (ashi 6K

1223 41225

66. 'hkruni urdhëresën e "ila zhvendos variablen ? në pozi"on tjetëri të listës së ndërlidhur - , :( ,^.lidhja; 61. Pili është efekti i ekzekutimit te urdhrit fillimi^.lidhja^.lidhja^.lidhja:(nil/Q -urdheri fillimi*.lidhja*.lidhja*.lidhja)+nil/ e përfundon listen e nderlidhur pas elementit të tret. 63. RIfarë është efekti i ekzekutimit te pero"edures $e% -pro"edura ne% rezervon hapsir kujtese për varibalën tipin e së"ilës e për"akton treguesi dhe vendos vlerën e parametrave #ë tregojnë në atë hapsirë kujtese. 65. 'hkrueni segment programi për shtimin e vlerës 1 në fillim të listës së ndërlidhur $e% (ndim! ndim^.nen :( 1 ndim^.lidhja:( fillimi fillimi)+ndim/ 6D. Nëse variabla aktual tregon në një element te listes , shkruni urdhëresën pasë ekzekutimit të së "ilës variabla aktual do të tregoj në elementin tjeter në list - a*t7al :( a*t7al^. lidhja/ (shih pytjen nr66! 6F.RIfarë është efekti i ekzekutimit të instruksionit të programit ndim :( aktual*.lidhja.*lidhja aktual*.lidhja*.lidhja :( ndim*.lidhja/ ndim*.lidhja :( aktual*.lidhja/ aktual*.lidhja:(ndim/ Ndrron radhën të dy elementeve në listë të "ilët pasojn aktual 6J.nëse fillimi tregon në elementin e parë të listës së ndërlidhur , shkruani urdhërin i "ili do të shtypë përmbatjen e fushës të elementit tjetër në listë. 6K. 'hkruani segment te programit i "ili do të shtyp listën e ndërlidhur. ndim)+fillimi/ ;hile ndim @Anil -o <e#in Sriteln(ndim*.nen!/ 0smail (ashi 6L 1223 41225

Ndim)+ndim*.lidhja End/ 6L. shkruani segment te programit për fshirje të elementeve të listës të pasojn pas elementit i shenuar si aktual. Ndim)+aktual*.lidhja/ 7ktual*.lidhja)+ndim*.lidhja/ (ispose(ndim!/ 12. %Ifarë efekti është ekzekutimit i urdhërit fillimi*.lidhja*.lidhja)+fillimi/Q -me ekzekutimi e këtij urdhëri formohet lista "iklike prej dy elementeve. 16. shkruani pro"edurën për futje në list të ndërlidht (e "ila përmban shenja ! në fajll.

11. 'hkruani pro"edurën e "ila nga lista edhën me numra të plotë pozitivë formon dy lista të reja njëra numra %ift ndërsa tjetra numra tek. 13 . 'hkruani pro"edurën për kopjimin e listës të ndëlidhur

15.'hkruani nënprogramin funksion i "ili teston se a është lista e ndërlidhur me renditje rritëse.

0smail (ashi 12

1223 41225

0smail (ashi 16

1223 41225

-supozojm se në një skedar ne disk ndodhen regjistrimet e punonjesve te nje ndermerrje ku "do regjistrim permaban) -emrin e punjonsit -numrin rendor TT -moshen TT -gjendjen "ivile TT -detyren (,&U87 , $78, eshte te krijohet nje list e lidhur duke le?uar keto regjistrime dhe duke i futur ne liste te renditura, duke filluar nga nje liste boshe . (,&U87 , (U&, eshte konsultimi i listes (shtim,he#je, modifikim te listes!. 'e fundi pas konsultimeve te kryera, lista duhet regjistruar ne skedar Histe8egjistrimesh$unonjesish/ 9illim 6. krijohet lista fillestare e renditur duke le?uar regjistrimet prej skedarit dhe duke i futuar ato ne list, duke filluar ato ne liste boshe 1. $erserit le?o Vgjedhje) 'ipas zgjedhje kryeej 6)He?o nje numer punonjesi dhe fshi regjistrim perkates/ 1)le?o nje regjistrim te ri dhe fute ate ne liste/ 0smail (ashi 11 1223 41225

3)Modifiko regjistrimin ekzistues/ 2)Bopjo listen ne skedar/ (erisa zgjedhje+2/ $er zgjidhjen e "do nenproblemi do ndertohen dhe perdoren pro"edura perkatese .

0smail (ashi 13

1223 41225

0smail (ashi 15

1223 41225

0smail (ashi 1D

1223 41225

$. te&*et
Ne disa aplika"ione nuk kërkohet përpunimi sekuen"ial i elementeve te listes , dhe në këso situata më i përshtashëm është një mënyrë tjetër e lidhjes dhe #asjes të të dhënave në listë. 'tek është struktur dinamike e të dhënave e "ila realizohet me ndimën e listës së ndërlidhur , ndërsa shfrytëzohet ashtu #ë të dhënat nga steku mirren me rradhë të kundërt prej asaj të futjes , d.m.th. futja e të dhënës së fundit në stek mirret e para nga steku. 'truktura e tillë është e njohur si lastWin firstWo7t ose shkurt struktura ="4>. 'teku përmabn varg të elementeve në të "ilin futja dhe fshirja bëhet vetëm nga njëra anë, e "ila #uhet koka e stekut. ,lementi i "ili para#et kokën është gjithmon elemnti i fundit i futur në stek. Boka e stekut është pozi"ioni për futje tjetër ose fshirje. Nëse koka dhe fundi i stekut tregojnë(shënjojn ! në të njejtin pozi"ion, steku është i zbarazët. >peraionet themelore mbi steke janë si në vazhdim dhe ekzekutohen me ndimë e pro"edurave si në vazhdim) ?reate (stek!-krijohet steku i zbrazt/ +7sh (stek, element!- futet element i ri në kokë të stekut/ $op (stek,elemt!- hi#et elementi nga koka e stekut/ 'i dhe përmes nënprogramit funksion/ Empty( setek!-teston se a është steku i zbarzët dhe si rezulltat jep Tr7e ose 4alse.

0smail (ashi 1F

1223 41225

fillimi

.n

.n-

...
.

nil

4i# 5 $asi stekun e përbëjn varg të dhënash, vlerat e tyre duhet memoruziar në formë të vargut(vektorit! në të "ilin se"ili element zë nga një pozi"ion, ndërsa pozi"ioni i parë para#et kokën e stekut. 'i% duket struktura e kujtesës së stekut përmban vargun(vektorin! për memorizimin e elementeve të tijë dhe një varibël për memorizim të pozi"ionev të elementeve #ë para#et kokën e vergut. 'ipas kësaj , steket realizohen me ndimën e vargjeve dhe rekordeve. Në këtë rastë këto mund ti definojmë në mënyrën si në vazhdim) ?onst Maks+. . . /(< Madhësia maksimale e stekut<! Type &ipi,lemeteve+ . . .(< &ipi i variablave të stekut<! Varg+@rray A .. Ba*sC >f &ipi,lementeve/ &ipi'tekut+ Record Boka:2 . .Maks/ ,lement:Varg End/ Var 'tek)&ipi'tekut; $ro"edurat për opera"ione themelore mbi steket është leht të shkruhen, por realizimi i stekeve përmes vargjeve(vektorve! nuk është e përshtashme pasi gjërsia fikse e vargut kufizon mëdhësin e stekut. $asi stek është listë elementet e së "ilëve mund tIju #aset vetëm nga njëra anë(nga koka!, është e natyrshme #ë dhe të realizohen si lista të ndërlidhura. Në këtë rastë definohet si)

Type &ipi,lemetit+ . . .; &ipi&regusit+*,lement'teku; ,lement'teku+ Record 0smail (ashi 1J 1223 41225

,dhana:TipiElementit; &jetri:&ipi&reguesit End/ &ipi'tekut+&ipi&reguesit/ Var 'tek)&ipi'tekut; $ro"edura për shtim të elementit të ri në stek do të ishte) +roced7re $ush(var stek)&ipi'tekut ; element: &ipi,lementit! (< 'tek është tregues i elementit në kokë të stekut <! Var pp)&ipi&reguesit (< &reguesi i elementit të ri<! <e#in $e%(pp!/ pp*.,dhana)+,lement/ pp* .&jetri)+'tek/ 'tek)+pp End/ $ro"edura për fshirje(largim! të elementit të stekut është) +roced7re +op(Var 'tek:&ipi'tekut/ ,lement :&ipi,lementit!/ Var pp: &ipi&reguesit (< &reguesi ndimës në kokë të stekut<! <e#in "f Emty &'tek! then Dalt Else <e#in ,lement)+'tek*.,dhana pp)+stek/ 'tek)'tek*.&jetri/ -ispose&pp); End End; $asi steku definohet si struktur abstrakte e të dhënave ,madhësia e tijë nuk është e kufizuar dhe ai asnjëher nuk mund të jetë i plotë. $ër këtë arye realizimi i tiillë i stekut ka përparsi nga ai paraprak.

0smail (ashi 1K

1223 41225

Steku -Ushtrime $una me stek-e 'teku është struktura e të dhënave e renditur sipas kohës të shkrimit në stek rrespektivisht të le?imit nga steku.'hkrimi në stek bëhet në fillim të stekut.He?im nga steku gjithashtu bëhet në fillim të stekut . >pra"ionet themelore me stek-un janë) shkrimi në stek, le?imi nga steku kotrolla se a është steku i zbrazt, kontrolla se a është steku plot 'teku sipas prin"ipit mund të realizohet -Me ndimën e vargjeve (vektorve!, 0smail (ashi 1L 1223 41225

-'i struktur dinamike e të dhënave -me ndimen e treguesve(pointerave! Nëse është Type &ipi0Vleres+char; 'tek+Record Vlera)&ipiiVleres Hidhja)*'tek End/ &reguesi)'tek a! 'hkruani pro"eduren dhe funksionet kokat e të "ilave janë +roced7re shkrim(v)&ipiiVleres! 47nction le?imi)&ipi0Vleres 9un"tion izbrazt b! 'hkruani programin për testimin e tyre zgjidhje e detyres 'tek si program implementohet si list me ndërldhije të njifishte struktures dinamike të të dhënave. &ë drejtuarit(#asja! në stek bëhet mendimën e treguesit të kokës së stekut. 'teku sipas nevojes mund të zgjerohet, respektivisht të zvoglohet-Me fjalë të tjera steku është gjatësisë variabile (të madhësisë! $ro"edurat e dhëna dhe fuksionet punojn vetëm me një stek i "ili është objekt(madhësi! globale në program $787M,&80 i pro"edures shkrimi është vlera e "ila shkruhet në stek. shkrimi i vlerave në stek është efekti anësor e ekzekutimit të pro"edurës 'hkrimi. 9unksioni le?imi është funksioni unar, d.m.th nuk ka parametra vlera e funksionit le?imi është vlera Eë le?ohet nga steku He?imi i vlerës nga steku është efekti anësor i ekzekutimit të funksionit le?imi >pera"ioni le?imi mundet gjithashtu të implementohet si pro"edur $8>P,(X8, le?imi(V78 v)&ipiivleres!/ Gjat implemtimit të tillë programor &ë stekut nuk ka kuptim opera"ioni -kontrollimi se a është steku plot $rogrami demonstron punën me pro"edurat dhe funksionet e dhëna ,dhënë hyrëse në program është 9jalë (alja nga $rogrami është fjala 0nverze .

0smail (ashi 32

1223 41225

'.Rend*et+,ueue'i dhe stek-et rendet janë lista spe"ifike tek te "ilat opera"a"ionet themelore si shtimi(futja! dhe marrja e të dhënave janë të kufizuara në fund të listës. 8end është struktur dinamike e të dhënave tek e "ila elementet shtohen nga njëra anë dhe mirren nga ana tjetër. Me fjalë të tjera , elementet përpunohen sipas rradhës në të "ilën gjenerohen, d.m.th. elementi i parë i dhënë(i futur! në rend është i pari i #asshëm( ikapshëm! nga rend-i. 'truktura e këtillë është e njohur me emrin si 9irstW0nW9irstW>ut ose shkurt 0smail (ashi 36 1223 41225

'truktura 909>. ,lementet mirren nga fillimi , ndërsa shtohen(futen! në në fund të rendit.

nil .n .n.! .

...

4i# 6

f7nd

fillimi

,mri rend (ang.E7e7e! për strukturën e tillë të dhënave është marrë për shkak të analogjisë me rendet nga jeta e përditshme, ndërsa në sistemet operative rendet aplikohen si rendet pritse të shfrytëzuesve në resurset e kompjuterit, më së shpeshti pro"esori #endror, ose hapsira e kujetsës e "ila i ndahet programit të shfrytëzuesit, më pas pajisjet të hyrje -daljeve etj. $asi elementet shtohen(futen! nga njëra anë dhe mirren nga ana tjetër e rendit janë të nevojshëm(për dallim nga stek-et! dy tregues, njëri #ë tregon në elementine e parë ndërsa tjetri në elementin e fundit të rendit. 'i dhe ste*-et dhe rend-et janë kryesisht të pakufizuar, por është e detyrushme #ë në %do %ast të dimë fundin dhe fillimin e tyre, %ka dhe lehtë realizohet me ndimën e treguesve. Nëse të dy treguesit kanë vlerën nil, rend-i është i zbrazët. >pera"ionet themelore mbi rend-et janë të njeta si dhe mbi stek-et dhe realizohen me pro"edura të ngjajshme. $ro"edura për marrjen e elementeve të rend-it është e njejt si pro"edura +op për stek-e, ndërsa pro"edura për futjen(shtimin! e elemeneteve kalon nëpër tërë rend-in përderisa mos ta gjejë(hasë! të fundit. $o theksojmë edhe njëher se rend-i mund të kërkohet vetëm në kahjen në të "ilën dhe krijohen treguesit. 'i shembull është dhënë segment i programit për shtypje të emrit të programit në rend-in pritës. Var 9illimi,aktual:&ipi&reguesit/ <e#in 7ktual)+9illimi/ ;hile aktual @A$il -o <e#in ;riteln(aktual*.,mri!/ &jetri)+7ktual*.&jetri End End/ 8ealizimi i rend-eve është di%ka më kompleks për shkak të nevojës #ë elementet të futen nga njëra anë dhe të mirren nga ana tjetër. ,dhe rend-et mund të realizohen me 0smail (ashi 31 1223 41225

ndimën e vargjeve(vektorve! dhe rekordeve. Në këtë rastë difinimi bëhet në mënyrën si në vazhdim) ?onst Maks+. . . /(< numri më i madhë i elemenetve të vargut<! Maksi+. . . /(< Bufiri i sipërm i indeksit të vargut(Maks-6!.<! Type &ipi,lemeteve+ . . .(< &ipi i variablave në rend.<! Varg+@rray A).. Ba*sC >f &ipi,lementeve/ &ipi8endit+ Record 9illimi,fund :2 . .Maksi/ ,lement:Varg End/ Var 8end )&ipi8endit; 'hpesh rendet realizohen si lista të ndërlidhura. Në këso raste definohen si) Type &ipi,lemtit+ . . . / &ipi&reguesit+ *elementi8endit/ ,lement8endit+Record ,dhana)&ipi,lementit/ &jetri) &ipi&reguesit/ End/ &ipi8endit+Record 9illimi, 9und)&ipi&reguesit End/ Var 8end)&ipi8endit/

0smail (ashi 33

1223 41225

Rend-et &E7i7e)-7shtrime $una me rende 8end është struktur e e renditur e të dhënave sipas kohes së fytjes(hyrjes! në rend,rrespektiveisht daljes prej 8endit Yyrja në rend bëhet në fund &ë rrendit .(alja prej rendit kruhet në fillim të rendit. >pera"ionet themelore me rende janë -Yyrja në rend 0smail (ashi 35 1223 41225

-(alja prej 8end-it -Bontrolla se a është rendi i zbrazt/ -Bontrolla se a është rendi i mushur/ 8endi mund të realizohet ) -si struktur statike e dhënave -me ndimmen e vargjev(vektorve! ,ose -si struktur dinaamike me ndimën e treguesve nëse është) "onst GjatMa?8end+62/ Type (imenzioni+6..GjatMa?8end/ 8end+Record ,lement+arrayZ(imenzioni[ of 0nteger/ 9undi8end,9illimi8end)(imenzioni end/ a! 'hkruani pro"edurat dhe funksionet kokat e të "ilave janë) +roced7re YyrjaNe8end(Var r:8end/ ?:"nte#er!/ 47nction (aljaNga8end(Var r:8end !inte#er/ 47nction 8end0Vbrazt(r)8end!:<oolean/ 47nction 8endi$lot(r)8end!)<oolean/ 'hkruani programin për &estimin e tyre FGH"-DH@ E +R><=EB"T 8end-i si program është i implementuar si vektor. $ër #ëllime të kompletimit është marrë #ë janë)8end-i,fundi8end-it, dhe fillimi8end-it janë elemente të rekordit-9ushave .By lloje i rendit të implementuar ka gjatësin maksimale fikse-madhësi e "ila nuk gu?on(nuk mund! të tejkalohet. $ro"edurat dhe funksionet e dhëna kanë si parametër të detyruar 8end-in.(uke ju falemenderuar kësaj në program mund të ekzistojn dhe shfrytëzohen shumë 8end-e.Në këtë detyrë këto janë )8end-i i numarave jonegativ të plotë dhe 8end-i 8end-i i numarave pozitiv $arametri i dytë i pro"edurës hyrja në rend është vlera e "ila #ëndron në rend. $ër shkak modifikimit të 8endit $arameti i parë është variabël Vlera e funksionit (alja nga 8end-i është vlera e "ila del(hi#et! prej 8end-it $ër shkak të modifikimit të 8endit parametri i pro"edurës është varibël 8endi është i zbrazt në#oftse fillimi dhe fundi i rendit përputhën 8end-i është i plot nëse fundi i 8endit arrin në fillim të rendit 9ilim dhe fundin mund ti paramendojm si dy pika në distan" nga e treta në të njejtin drejtim.Nëse fillimi i rendit arrin 9undin e 8end-it -8endi është i zbrazt dhe shkaktohet e ashtu#ujtura Xnder9loN-e 8endit.Nëse fundi i 8endit e aarrin fillim e rendit8end-i është plot dhe shkaktohet e ashtu#uajtura >ver9loN -e 8endit

0smail (ashi 3D

1223 41225

9unksioni 8endi$lot Nuk është i implementur në mënyrë ekspli"ite $rogrami implementon pro"edurën dhe funksionet e dhëna e dhëna Yyrëse Në program është vektori i numrave të plot të ndryshëm prej zero. 9undi i futjes së të dhënave jepet me vlerën (2! (alja prej programit është vektori i numrave të plotë .8radhitja e numrave në vektor është i për"aktuar me rradhën e futjes(dhënjes! . $rogram 8endW6(input,output!/ -shfrytëzohet struktura e &ë dhënave në formë 8end-it #ë nga vektori i dhënë i numrave të plotë ndahet vektori pozitiv dhe vektori jonegativ .

0smail (ashi 3F

1223 41225

.. /ra!et dhe )emët
Graf-i përman bashkësi të "aktua të elementeve të "ilat #uhen nyje zbashku me një numër të "aktuar degëve të "ilat lidhin %ifte të nyjeve. Mund të para#iten përmes matri"ave ose listave. 7snjë një mënyrë nuk është plotësisht efikase pasi memorizohen edhe disa informa"ione redudante. Bur para#itet me ndimën e listave, mund të realizohen me vektor(vargje një dimenzionale! dhe matri"a në kombinim me rekorde ose shpesh si struktura jolineare dinamike të dhënave. Grafet lajmrohen si struktura dinamike e të dhënave në modelim (e #ar#eve elektrike, sistemeve komunikuese, strukturave kimike etj.!. &ë dhëna të ve%anta para#esin nyje të grafeve, ndërsa lidhjet ndërmjet të dhënave degët. Në $as"al përmbatjen e variablave dinamike e përbëjnë të dhënat e të njetit tip dhe përbëjnë nyjet e grafit, ndërsa degët janë të për"aktuar me tregues. Variabla treguese duhet të ketë po a# tregues sa ka dhe numër maksimal të degëve të "ilat fillojn nga një nyje. (isa nga këto mund të kenë dhe vlerën nil 'truktura e grafit definohet në mënyrën si në vazhdim) ?onst 0smail (ashi 3J 1223 41225

NumerNyje+. . . Type &reguesi+*Nyje/ Nyje+Record ,dhana)&ipielementit/ (ega)@rrayZ6..NumerNyje[ >f &reguesi End/ $ema(ang. tree! është tip spe"ial i grafit dhe në $as"al definohet në mënyrën si në vazhdim) ?onst Maks+ . . . ;(<numri më i madhë i degëve <!/ Type &ipi,lementit + . . . (< &ipi i të dhënave në nyje<! &regues+ *Nyje/ Nyje+Record ,dhana:&ipi,lementit; (ega:@rray Z6 . . Maks[ >f &regues End; 'truktura e pemës binare përdoret me rastin e zgjidhjes të problemeve të ndryshme , ndërsa në programim për kërkim dhe sortim të bashkësive të ndryshme të dhënave. $ro"edurat për kërkim në strukturën e pemës binare dhe për 9utjen dhe fshirjen të elementeve të ve%an përdoret nyja edhe tergusi i majt dhe i djathtë. 'truktura e pemës binare definohet në formën)

.

.

.

4i# !)

Type &ipi,lementit+ . . .; &reguesi ( ^Nyje/ Nyje+Record ,dhana:&ipi,lemntit/ Majt, djatht:&reguesi End; Me grafe dhe pemë përshkruhen strukturat dinamike jolineare struaktura e të "ilave mund të jetë mjajftë komplekse dhe nuk është %ështje e këtij kursi.

0smail (ashi 3K

1223 41225

-$,M7 \0N78, BO8B0M0 0 $,MO' \0N78, $ër vektorin e dhënë me numra të plotë formoni pemën e renditur binare 0smail (ashi 3L 1223 41225

VG:0(Y:7 , $8>\H,M0& të (YëN7& hyrëse në program janë) - numri i elementeve e vektorit me numra të plotë -elementet e vektorit të dhënë. &ë dhënat dalëse të programit janë elementet e renditura të pemës binare. ,lementet e pemës binare janë të tipit) &ype 9jal+re"ord "elsi)0nteger/ numri)0nteger djatht,majt)*fjal ,nd/ për se"ilin element të dhënë të vektorit thirret pro"edura kerkimi. Nëse elementi i dhënë nuk ekziston në pemë -pro"edura kërkimi fut element të ri. nëse elementi i futur ekziston në $emë dhe nëse elementi i ri më i vogël se ai %els i pemës-kërkohet në anën e majt të brezit. rrite numri i elementeve në pemë ,pasi në vektor lajmrohet i njejti element pro"edura shtypja e pemës shtyp elementet e pemës binare në mënyrën si në vazhdim) -spari shtypen elementet e nënpemës së majt -Më pas shtypet trungu, dhe -në fund shtypen elementet e nënpemës së majt..

0smail (ashi 52

1223 41225

-'htegtimi në pemë \inare 9ormoni pemën binare dhe vizitone atë në renditje prefikese ,infikse dhe rendije postfikse $ema \inare jepet me shenemin prefiks ,d.m.th spari jepet rraja e pemës, Nëpema e majt ,dhe në fund ,Nënpema e djatht. VG:0(Y:7 , $8>\H,M0& rraja nënpemëss së e majt dhe djatht e "ila i përgjigjet operandit në prezentimin intern tregohet me N0H,ndërsa në prezentmin e?tern tregohet me pikë(.! 0smail (ashi 56 1223 41225

$rogram përbëhet prej pro"edurës) -$reuel...dhanja(futja! e pemës binare të dhënë me shenimin prefuks. -$refired...vizita e pememës binare me renditje prefikse dhe shtypja e saj në shenimin prefiks -infrend..... -postfrend... ... pro"edurat e dhëna janë rekurzive dhe shprehin ese"n"ën e vizitës të pemës.

0smail (ashi 51

1223 41225

0smail (ashi 53

1223 41225