You are on page 1of 37

Listat e lidhura

CN508 Struktura te avancuara te te dhenave


Listat e lidhura

 Listat e lidhura perdoren per te ruajtur elemente te dhenash


qe nuk jane te ngjitur me njeri tjetrin
 fizikisht mund te ndodhen ne vende te ndryshme te memorjes
 Cdo element lidhet me elementin pasues me ane te nje
reference si ne nje zinxhir
 Elementi pasues mund te ndodhet fizikisht kudo
 Ky fleksibilitet lejon qe te shtohen dhe te fshihen elemente pa
zhvendosur te dhenat
Listat e lidhura

Kemi dy versione të listave të lidhura:


1. lista e lidhur njëfish (angl. single link, ose singly linked list) dhe
2. lista e lidhur dyfish (angl. doble link, ose doubly linked list).

 Lista e lidhur njëfish i mundëson programit që të lëvizë nëpër listë në një drejtim, i cili
zakonisht është prej fillimit të listës, drejt fundit te listës, apo si thuhet ndryshe, lëvizje
para.
 Lista e lidhur dyfish, i mundëson programit që të lëvizë nëpër listë në të dy drejtimet ,
apo si thuhet ndryshe, lëvizje para dhe prapa.
Listat e lidhura
 Cdo element ne listen e lidhur quhet nyje (ang. node)
 Lista e lidhur perbehet nga nje koleksion nyjesh te lidhura me
njeri-tjetren, te krijuara ne menyre dinamike
 Cdo nyje perbehet nga
1. elementi i te dhenave
2. nje reference per tek nyja pasuese ne liste
 Per te patur akses ne elementet e listes, ruajme referencen per
tek nyja e pare, qe quhet koka (header)
 Nyja e fundit ne liste ka nje reference qe eshte null e cila shenon
fundin e listes
Listat e lidhura

 Veprimet e shtimit dhe fshirjes se nje elementi jane te shpejta dhe eficiente.
Implementimi i nyjes ne C++

struct Node
{
int data;
Node *next;
}
Rishikim i referencave
Rishikim i referencave

a) Deklarimi i dy variblave te
referencave
b) alokimi i nje objekti te ri
c) alokimi i nje objekti te ri,
duke e caktuar objektin e
per fshirje
d) barazimi I nje reference me
nje reference te dhene
Rishikim i referencave

e) alokimi i nje objekti te ri

f) dhenia e vleres null nje


reference

g) barazimi me referencen null


Nje liste e lidhur baze

 Ne mund te printojme ose kerkojme ne listen e lidhur duke filluar nga nyja e pare
dhe duke ndjekur zinxhirin e lidhjeve pasuese.

 Dy veprime baze qe duhet te kryhen jane shtimi dhe fshirja e nje elementi cfaredo,
x.
 Edhe pse do te shikojme dy klasa për listën e lidhur njëfish, klasa
SinglyLinkedListNode përdoret vetëm për ruajtje. I tërë algoritmi implementohet në
klasën SinglyLinkedList.
Listat e lidhura njefish
Bredhja e listes njefishe
Shuma e listes se lidhur njefish
Shtimi ne listen e lidhur njefish
 Rasti i listës së zbrazët

 Shtimi i nyjes në pozicionin e pare

 Shtimi i nyjes në fund

 Rasti i përgjithshëm
Shtim ne fillim te listes
Shtimi ne fund te listes
Shtim ne nje pozicion te caktuar
Lista e lidhur njëfish – Operacioni i largimit (fshirjes)

 Lista ka vetëm një nyje


 Largo nyjen e parë (fillimin)

 Largo nyjen e fundit

 Rasti i përgjithshëm
Largimi i nyjes se pare
Largimi i nyjes se fundit
Largimi i nje nyje te dhene
Struktura e listës së lidhur dyfish

Nyja eshte një element me tri nënelemente.


 Njëri përmbanë vlerën, e cila mund të jetë një atribut ose shumë atribute
 Tjetri pointon në nyjen e paraardhese dhe i fundit pointon në nyjen e
pasardhese.
 Kur vendoset një element i ri në listën e lidhur, alokohet nyja e re dhe
caktohen pointerët për nyjen e paraardhese dhe atë pasardhese.
Struktura e Nyjes ne C++

struct Node
{
int data;
Node* previous;
Node* next;
};
Shtimi i nje nyjeje skematikisht
Heqja e nje nyjeje skematikisht
Lista dyfishe vs listes njefishe

Lista e lidhur dyfish quhet edhe bidireksionale (angl. bidirectional-dy


drejtimëshe), sepse secila nyje përmbanë pointer në nyjen e përparshme
dhe të ardhshme në listën e lidhur.
Kjo mundëson që të përshkuajmë listën e lidhur në të dy drejtimet duke ju
referuar nyjes së përparshme dhe asaj të ardhshme.
Lista mund të transformohet në listë të lidhur njëfish duke pasur vetëm një pointer në
strukturë, që përmban adresën e nyjes së ardhshme.
Në mënyrë tipike, nyja e listës së lidhur njëfish i referohet vetëm nyjes së ardhshme, e
jo edhe asaj paraardhese, sepse asgjë nuk e ndalon që të krijohet vetëm
referenca prapa, duke përdorur vetëm pointerin për nyjen e pasardhese.
Klasa List e Lidhur Dyfishe ne C++
Lista e lidhur në C++ STL (Standard
Template Library )
 Në STL ekziston libraria <list> për listën e lidhur dyfish. Lista e STL-it mund të
shtojë elementet në fillim më shpejtë sesa vektorët, sepse lista nuk ka
nevojë për zhvendosjen e elemeneteve të tjera.

 Listat po ashtu janë efikase me rastin e shtimit të elementeve në fund sepse


kanë pointerin e brendshëm (built-in) për në elementin e fundit në listë.
Disa funksione
Shembull
FUND

You might also like