Estruktura ng datos

Sa agham pangkompyuter, ang data structure (estruktura ng datos ay isang lohikal na pagsasaayos ng datos sa isang kompyuter upang magamit ito ng mas epektibo. Ito ay ang implementasyon ng abstract data type (tipo ng abstraktong datos) sa isang wikang pamprograma kung saan ang mga kaukulang operasyon ay maaaring gawin sa datos na nakapaloob dito.
Ang iba't ibang klase ng estruktura ng datos ay may kanya-kanyang gamit. Sa katunayan, ang iba sa mga ito ay spesipiko lamang para sa isang gawain. Halimbawa, mas magandang gumamit ng mga punong binaryo kung madami ang datos na kailangan isaayos (katulad ng mga database) at ang array kung simpleng pagmamanipula lamang ng limitadong datos ang kailangan.
Napaka-importante ng mga estruktura ng datos sa pag gawa ng mga sopwer sa kompyuter. Ang ilan sa mga epektibong algoritmo ay nangangailangan ng implementasyon ng mga estruktura ng datos upang tumakbo ng maayos. Kinakailangan din ito upang mapadali ang pag disenyo ng mga database kung saan importante ang pagkakasaayos ng datos.

Konsepto sa likod ng data structures
Nakabase ang konsepto nito sa pagkuha ng datos ng kompyuter sa memorya nito. Kumbaga ang nangyayari sa data structure ay ang pagkukwenta ng mga address ng datos (katulad ng sa array) o di kaya ang pagtatago mismo ng address ng mga ito sa loob mismo ng data structure (linked list) upang makita ang mga elemento na kabilang sa estruktura na iyon.

Iba't ibang klase ng data structures
Ang pinaka-laganap na data structure ay ang array. Halos lahat ng mga high-level programming language ay nag-iimplementa ng ganitong uri ng estruktura ng datos.
Ang ilan pa sa mga karaniwang estruktura ng datos ang : stack, queue, pinagdugtong na listahan, punong binaryo.

Mga datatype (tipo ng datos)

Tipong primitibo
Boolean (para sa mga halagang boolean na True/False)
Char para sa mga halagang character
Float para sa pag-iimbak(store) ng mga halagang real na bilang
Double na mas malaking sukat ng tayp na float
int para sa mga halagang integral(buo) o tiyak ang presisyon
String para sa string o sunod sunod na character
Enumerated type

Tipong kompuwesto
Array
Record (na tinatawag ring tuple o struct)
Union
Tagged union (na tinatawag ring variant, variant record, discriminated union, o disjoint union)
Plain old data structure

Tipong abstrakto 
Container
Deque
Map/Associative array/Dictionary
Multimap
Multiset
Priority queue
Queue
Set
Stack
String
Tree
Graph
Hash

Estruktura ng datos na lineal

Arrays 
Array
Bidirectional map
Bit array
Bit field
Bitboard
Bitmap
Circular buffer
Control table
Image
Dynamic array
Gap buffer
Hashed array tree
Heightmap
Lookup table
Matrix
Parallel array
Sorted array
Sparse array
Sparse matrix
Iliffe vector
Variable-length array

Listahan 
Doubly linked list
Linked list
Self-organizing list
Skip list
Unrolled linked list
VList
Xor linked list
Zipper
Doubly connected edge list

Trees (Puno)

Binary trees (Punong binaryo)
AA tree
AVL tree
Binary search tree
Binary tree
Cartesian tree
Randomized binary search tree
Red-black tree
Rope
Scapegoat tree
Self-balancing binary search tree
Splay tree
T-tree
Tango tree
Threaded binary tree
Top tree
Treap
Weight-balanced tree

B-trees 
B-tree
B+ tree
B*-tree
B sharp tree
Dancing tree
2-3 tree
2-3-4 tree
Queap
Fusion tree
Bx-tree

Heaps (bunton) 
Heap
Binary heap
Binomial heap
Fibonacci heap
AF-heap
2-3 heap
Soft heap
Pairing heap
Leftist heap
Treap
Beap
Skew heap
Ternary heap
D-ary heap

Tries 
Trie
Radix tree
Suffix tree
Suffix array
Compressed suffix array
FM-index
Generalised suffix tree
B-trie
Judy array
X-fast trie
Y-fast trie
Ctrie

Multiway trees 
Ternary search tree
And–or tree
(a,b)-tree
Link/cut tree
SPQR-tree
Spaghetti stack
Disjoint-set data structure
Fusion tree
Enfilade
Exponential tree
Fenwick tree
Van Emde Boas tree

Space-partitioning trees
Segment tree
Interval tree
Range tree
Bin
Kd-tree
Implicit kd-tree
Min/max kd-tree
Adaptive k-d tree
Kdb tree
Quadtree
Octree
Linear octree
Z-order
UB-tree
R-tree
R+ tree
R* tree
Hilbert R-tree
X-tree
Metric tree
Cover tree
M-tree
VP-tree
BK-tree
Bounding interval hierarchy
BSP tree
Rapidly-exploring random tree

Application-specific trees
Syntax tree
Abstract syntax tree
Parse tree
Decision tree
Alternating decision tree
Minimax tree
Expectiminimax tree
Finger tree

Hashes 
Bloom filter
Distributed hash table
Hash array mapped trie
Hash list
Hash table
Hash tree
Hash trie
Koorde
Prefix hash tree

Graphs (Grapo) 

Graph
Adjacency list
Adjacency matrix
Graph-structured stack
Scene graph
Binary decision diagram
Zero suppressed decision diagram
And-inverter graph
Propositional directed acyclic graph
Directed graph
Multigraph
Hypergraph

Iba pa 
Lightmap
Winged edge
Quad-edge
Routing table
Symbol table

Sanggunian

Estruktura ng datos