Professional Documents
Culture Documents
Leksioni 2
Leksioni 2
Leksioni2Listatdhe
Implementimiityre
UNYT - Educating Tomorrow's Leaders 1
Listat dhe Implementimi i tyre
Listat
Listat e lidhura
Implementimi i listave me vektore (arrays) dhe me
lista te lidhura
Listat rrethore
Listat e lidhura dyfishe
1-8
Ndryshimi i madhesise
se vektoreve
Shembull
int max_size = 50;
double [] myArray = new double[max_size];
...
double [] newArray =
new double[new_ capacity];
class ListNode
{
Object element;
ListNode next;
}
1-13
Rishikim i referencave
(ang. references / pointers)
Nemundteprintojmeosekerkojmenelistenelidhur
dukefilluarnganyjaeapredhedukendjekurzinxhirin
elidhjevepasuese.
Dyveprimebazeqeduhettekryhenjaneshtimidhe
fshirjaenjeelementicfaredo,x.
1-17
Shtimi nje nyjeje
Ne kod:
tmp = new ListNode( ); // Create a new node
tmp.element = x; // Place x in the element member
tmp.next = current.next; // x's next node is b
current.next = tmp; // a's next node is x
1-18
Shtimi i nje nyjeje
Tani tmp nuk nevojitet me. Pra gjithcka me nje rresht kod:
1-19
Fshirja
Pertahequrelementinxngalistaelidhur,evendosim
referencencurrentteknyjaparax,dhereferencen
pasueseendryshojmeqetatejkalojenyjenx.
Ne kod:
current.next = current.next.next;
1-20
Nyja e pare
1-21
Nyja e pare
Nyjaepare(header)nukpermbantedhena,porsherben
perteplotesuarkushtinqecdonyjeduhetteketenjenyje
paraardhese.
Nyjaeparenalejonqeteshmangimrastetevecantasi
shtimiinjeelementiteparedhefshirjaeelementitte
pare.
1-22
Lista bosh
Menjenyjeteparebosh,listaeshteboshnese
header.nexteshtenull
1-23
Implementimi
1-
24
Pozicioni aktual (current)
1-25
Iteratoret
Skema me pozicionin aktual (current) ka nje problem: Me
nje pozicion te vetem, rasti i dy iteratoreve qe duhet te
aksesojne listen ne menyre te pavarur nuk suportohet.
Nje menyre per ta shmangur kete problem eshte te
perkufizojme nje klase me vete iterator, e cila mban
pozicionin aktual.
Klasa e listes me pas nuk e ruan pozicionin aktual dhe do
kishte vetem metoda qe e trajtojne listen si nje njesi, si psh
isEmpty dhe makeEmpty, ose qe e pranojne nje
iterator si parameter, si psh insert
1-26
Iteratoret
1-27
Shembull: Perdorimi i iteratorit
EinicializojmeitrmeelementineparenelistentheList(duke
shmangurelementineparesigurisht)dukereferencuariteratorine
dhenengaList.first().Testiitr.isValid()eshtenjesoj
metestinp!=nullqedokryhejnesepeshtereferenceedukshme
pernenjenyje.Shprehjaitr.advance()eshtenjesojme
p=p.next. 1-28
Current:helpsto
maintainthenotion
ofthecurrent
position
1-29
Headernode
1-30
1-31
static printList(List)
1-32
find( X )
1-33
remove( X )
1-34
findPrevious( X )
1-35
insert (X )
1-36
Listat e Lidhura Dyfishe
(ang. Doubly Linked Lists)
Listat e lidhura te thjeshta nuk jane eficiente
per disa veprime
Per shembull, edhe pse eshte e thjeshte te
shkosh ne fillim te listes, nevojitet kohe qe te
arrish deri ne fund te saj
Per kete arsye, mbajme nje reference te dyte
per tek elementi i fundit te listes (tail)
Ne cdo nyje kemi dy referenca, nje per tek
nyja pasardhese (next) dhe nje reference per
tek lista paraardhese (previous)
1-37
Nje liste e lidhur dyfishe
1-38
Lista boshe
1-39
Listat e lidhura rrethore