Adatszerkezet

Adatszerkezetnek nevezzük a (számítógépes adatfeldolgozás céljaira előállított) adatok tárolási célokat szolgáló strukturális, formai elrendezését.

A bináris fa, egyszerű bináris faszerkezet összekapcsolt adatok tárolására

A számítástechnikában az adatszerkezet az adatok számítógépben való tárolása olyan módon, mely biztosítja azok hatékony használatát. Sokszor egy körültekintően megválasztott adatszerkezet hatékonyabb algoritmusok használatát teszi lehetővé. Az adatszerkezet megválasztása gyakran egy megfelelő absztrakt adatszerkezet megválasztásával kezdődik. A jól megtervezett adatszerkezet számos kritikus művelet végrehajtását teszi lehetővé a lehető legkisebb erőforrásigény – futási idő, tárolóterület – mellett. Az adatszerkezet megvalósítása adattípusok, hivatkozások és egy programnyelv által biztosított, rajtuk elvégzett műveletek felhasználásával történik.

A különböző adatszerkezetek más-más alkalmazásoknál használhatók, közülük némely nagy mértékben bizonyos feladatokra specializált. Például a B-fa különösen jól alkalmazható adatbázisok megvalósítására, míg a irányítótábla (routing table) számítógépek hálózatának működését szabályozza.

Számos programtípus tervezésénél az adatszerkezet megválasztása elsődleges tervezési szempont, mivel a nagy rendszerek kifejlesztésében szerzett tapasztalatok azt mutatják, hogy a megvalósítás nehézsége, és a végeredmény teljesítménye és minősége nagy mértékben a legmegfelelőbb adatszerkezet kiválasztásától függ. Az adatszerkezet megválasztása után már gyakran viszonylag egyértelmű a használandó algoritmus. Van amikor a dolgok fordítva működnek – azért választunk bizonyos adatszerkezetet, mert bizonyos kulcsfeladatok olyan algoritmussal rendelkeznek melyek különleges adatszerkezettel adják a legjobb eredményt.

Ez a felismerés számos olyan formalizált tervezési módszer, programozási nyelv születését hívta elő, amelyekben az adatszerkezet, és nem az algoritmus a szervező kulcstényező. A legtöbb programnyelvre jellemző valamilyen modul rendszer készlet, mely az adaszerkezetek különböző alkalmazásokban való biztonságos újrafelhasználását teszi lehetővé azáltal, hogy azok ellenőrzött megvalósításának (implementáció) részleteit a vezérelt interfész modul mögött rejti el. Az objektumorientáltságot támogató programozási nyelvek, mint például a C++ és a Java erre a célra főleg osztályokat használnak.

Mivel a professzionális programok számára az adatszerkezetek nagyon fontosak, közülük sokat széles körben támogatnak a modern programozási nyelvek és fejlesztői környezetek szabványos könyvtárai, mint például a C++ Szabványos Sablonkönyvtára (Standard Template Library), a Java Alkalmazásfejlesztői Interfész (API) (Application Programming Interface), és a Microsoft .NET framework.

A legtöbb adatszerkezet építőkövei a tömbök, rekordok, változó rekordok, és hivatkozások. Például a nullképes hivatkozás, egy olyan hivatkozás amely lehet akár nullértékű is, a hivatkozások és a változó rekordok egy kombinációja, a legegyszerűbb láncolt adatszerkezet pedig, a láncolt lista, rekordokból és nullképes hivatkozásokból épül fel.

Vita van arról, hogy az adatszerkezetek vajon a program megvalósítását (implementáció) képviselik, vagy csak illesztőegységet (interfész) jelentenek. Ennek eldöntése nézőpont kérdése. Az adatszerkezeteket tekinthetjük úgy, mint két függvény közötti interfész, vagy mint egy módszer olyan tár kezelésének megvalósítására, amely a vonatkozó adattípus szerint van szervezve.

További információk

  • Descriptions from the Dictionary of Algorithms and Data Structures
  • Hivatkozások a C/C++ Felhasználói Csoportok oldalairól
  • Collection of free Data structures e-books
Sablon:Adatszerkezetek
  • m
  • v
  • sz
Adatszerkezetek
Típusok
Collection • Container
Absztrakt adattípusok
  • Asszociatív tömb (associative array, map)
  • Kétvégű sor (deque)
  • Fa (tree)
  • Gráf (graph)
  • Halmaz (set)
  • Hash (hash)
  • Prioritásos sor (priority queue)
  • Sor (queue)
  • Verem (stack)
Tömbök
  • Bittáblázat (bitboard)
  • Bittérkép (bitmap)
  • Dinamikus tömb (dynamic array)
  • Magassági mező (heightmap)
  • Mátrix (2 dimenziós tömb, matrix)
  • Párhuzamos tömb (parallel array)
  • Ritka tömb (sparse array)
  • Ritka mátrix (sparse matrix)
  • Tömb (array)
Láncolt adatszerkezetek
  • Láncolt lista (linked list)
  • Kétszeresen láncolt lista (doubly linked list)
  • Kifejtett láncolt lista (unrolled linked list)
  • Önrendező lista (self-organizing list)
  • Ugrásos lista (skip list)
  • VLista (VList)
  • XOR láncolt lista (xor linked list)
Fa adatszerkezetek
  • AA-fa
  • AVL-fa
  • Bináris fa (binary tree)
  • Bináris keresőfa (binary search tree)
  • Bűnbak fa (scapegoat tree)
  • Intervallum fa (interval tree)
  • Önkiegyensúlyozó bináris keresőfa (self-balancing binary search tree)
  • Piros-fekete fa (red-black tree)
  • Súlyozott fa (weight-balanced tree)
Kupacok
  • 2-3 kupac
  • Bináris kupac (binary heap)
  • Binomiális kupac (binomial heap)
  • D-kupac (D-ary heap)
  • Fibonacci kupac (Fibonacci heap)
  • Kupac (heap)
  • Párosító kupac (pairing heap)
  • Treap
Gráf adatszerkezetek
Hash
  • Bloom szűrő
  • Elosztott hash tábla
  • Hash fa
  • Hash lista
  • Hash-tábla
  • Hash trie
  • Prefix hash fa
Nemzetközi katalógusok
  • LCCN: sh85035862
  • GND: 4011146-5
  • NKCS: ph119336
  • BNF: cb119313298
  • KKT: 01167757
  • Informatika Informatikai portál • összefoglaló, színes tartalomajánló lap