Struktura e të dhënave

Në shkencat kompjuterike, **struktura e të dhënave** ose ***strukturë me të dhëna***, është një mënyrë e veçantë për ruajtjen dhe organizimin e të dhënave në një kompjuter në mënyrë që të mund të përdoren në mënyrë efikase .Më saktësisht, një strukturë të dhënash është një koleksion vlerash të dhënash, marrëdhëniet midis tyre dhe funksionet ose operacionet që mund të aplikohen mbi të dhënat, pra, është një strukturë algjebrike mbi të dhënat.

## Perdorimi 
Strukturat e të dhënave shërbejnë si bazë për llojet abstrakte të të dhënave (ADT). ADT përcakton formën logjike të llojit të të dhënave, ndërsa struktura e të dhënave zbaton formën fizike të këtij lloji të të dhënave.

Lloje të ndryshme strukturash të të dhënave janë të përshtatshme për lloje të ndryshme aplikimesh, dhe disa janë shumë të specializuara për detyra specifike. Për shembull, bazat relacionale zakonisht përdorin indekset **B-tree** për marrjen e të dhënave, ndërsa zbatimet e kompajlerëve zakonisht përdorin tabelat **hash** për të kërkuar identifikues.

## Parimet themelore 
Strukturat e të dhënave janë bazuar në përgjithësi në aftësinë e një kompjuteri për të gjetur dhe ruajtur të dhënat në çdo vend në kujtesën e saj, të përcaktuara nga një adresë – një varg që vetë mund të ruhet në memorie dhe manipulohet nga programi. Kjo aftësi u lejon programeve të manipulojnë drejtpërdrejt vargjet e adresave për të përmirësuar efikasitetin e ruajtjes dhe rikthimit të të dhënave, duke theksuar lidhjen e ngushtë midis arkitekturës së kujtesës dhe strukturave logjike të të dhënave.

## Bashkësia e strukturave të të dhënave 
Strukturat e të dhënave që më shpesh përdorwn janë :
array, linked list, hash-table, heap, Tree (Binary Tree, B-tree, red-black tree, trie). Po ashtu, stack, dhe queue janë të zakonshme për modelimin e proceseve të radhitjes ose grumbullimit të të dhënave.
Këto struktura zgjidhen bazuar në nevojat specifike të problemeve që trajtohen. Për shembull, një **priority queue**, e implementuar shpesh me **heaps**, siguron që elementët me prioritet më të lartë të përpunohen të parët, duke ofruar operacione efikase si **insert** dhe **delete-max**, që janë të dobishme për sistemet e planifikimit. 

## Deklarimi i strukturave 
Strukturat, para se të shfrytëzohen, duhet të definohen, duke e përdorur komandën struct. Kjo komandë në formë të përgjithshme shkruhet:

struct e
{
t1 x1;
t2 x2;
......
tn xn;
};

ku janë:
e – emri i strukturës.
t1, t2, …, tn – tipet e të dhënave në komponentet e strukturës.
x1, x2, …, xn – variablat në komponentet e strukturës.
Variablat që përfshihen në strukturë si dhe tipet e tyre shënohen brenda kllapave dhe njihen si anëtarë të strukturës, ose edhe komponente të strukturës. Definimi i strukturës pëfundon me pikëpresje (;). Nëse, p.sh., duam që të dhënat e tipeve të ndryshme të një personi, siç janë: emri, viti i lindjes dhe qyteti i banimit, t'i marrim si komponente të strukturës me emër person, definimi përkatës do të duket:

struct person
{
char emri[8];
int viti;
char qyteti[10];
};

Në këtë mënyrë, të dhënave të tipeve të ndryshme u është shoqëruar emri i përbashkët person, me çka lehtësohet ruajtja dhe shfrytëzimi i tyre gjatë përpunimit.
## Libra të tjerë 
* Donald Knuth, *The Art of Computer Programming*, vol. 1. Addison-Wesley.
* Dinesh Mehta and Sartaj Sahni *Handbook of Data Structures and Applications*, Chapman and Hall/CRC Press, 2007.
* Niklaus Wirth, *Algorithms and Data Structures*
* Agni Dika, "Programimi i Orientuar në Objekte në C++"

## Burimi