Intern
Aké existujú dátové štruktúry?
sobes.tech AI
Odpoveď od AI
Existujú nasledujúce základné dátové štruktúry:
Primitívne (Primitive):
- Celé čísla (Integer)
- Čísla s pohyblivou desatinnou čiarkou (Floating-point numbers)
- Boolean hodnoty (Boolean)
- Symboly (Character)
Abstraktné (Abstract):
- Pole (Array): Usporiadaná kolekcia prvkov jedného typu, prístup cez index s konštantnou časovou zložitosťou.
- Prepojený zoznam (Linked List): Kolekcia uzlov, z ktorých každý obsahuje údaje a odkaz na ďalší uzol. Efektívne pridávanie/odstraňovanie na začiatku/konce, prístup cez index - $O(n)$.
- Jednoduchý prepojený zoznam (Singly Linked List)
- Dvojitý prepojený zoznam (Doubly Linked List)
- Kruhový prepojený zoznam (Circular Linked List)
- Zásobník (Stack): Dátová štruktúra LIFO (Last-In, First-Out). Operácie: push (pridanie), pop (odstránenie), peek (prehliadanie vrchného prvku).
struct Stack<Element> { private var elements: [Element] = [] mutating func push(_ element: Element) { elements.append(element) } mutating func pop() -> Element? { return elements.popLast() } func peek() -> Element? { return elements.last } var isEmpty: Bool { return elements.isEmpty } } - Fronta (Queue): Dátová štruktúra FIFO (First-In, First-Out). Operácie: enqueue (pridanie), dequeue (odstránenie), peek (prehliadanie prvého prvku).
struct Queue<Element> { private var elements: [Element] = [] mutating func enqueue(_ element: Element) { elements.append(element) } mutating func dequeue() -> Element? { guard !elements.isEmpty else { return nil } return elements.removeFirst() } func peek() -> Element? { return elements.first } var isEmpty: Bool { return elements.isEmpty } } - Hashovacia tabuľa (Hash Table) / Slovník (Dictionary) / Asociačný poľ (Associative Array): Kolekcia párov "kľúč-hodnota", ktorá umožňuje efektívne vyhľadávanie, pridávanie a odstraňovanie podľa kľúča pomocou hashovacej funkcie.
var dictionary = [String: Any]() // Príklad slovníka v Swift dictionary["key1"] = "value1" let value = dictionary["key1"] - Množina (Set): Nestruktúrovaná kolekcia jedinečných prvkov. Podporuje operácie: pridanie, odstránenie, kontrola existencie, zjednotenie, prienik, rozdiel.
var set: Set<Int> = [1, 2, 3] // Príklad množiny v Swift set.insert(4) let containsTwo = set.contains(2) - Strom (Tree): Hierarchická štruktúra dát, pozostávajúca z uzlov spojených hranami. Má koreňový uzol a potomkov.
- Binárne strom (Binary Tree)
- Binárne vyhľadávacie strom (Binary Search Tree - BST)
- Vyvážené binárne strom (Balanced Binary Tree) - AVL, červeno-čierne strom
- B-strom (B-Tree)
- Graf (Graph): Súbor vrcholov (uzlov) a hrán (väzieb), ktoré spájajú vrcholy. Môže byť orientovaný alebo neorientovaný, s váhami alebo bez.
Porozumenie týchto štruktúr dát je kľúčové pre písanie efektívneho a škálovateľného kódu. Výber správnej dátovej štruktúry závisí od požiadaviek na výkon operácií (vyhľadávanie, vkladanie, mazanie) a charakteru dát.