Sobes.tech
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.