Sobes.tech
Intern

Jaké existují datové struktury?

sobes.tech AI

Odpověď od AI

Následují základní datové struktury:

Primitivní:

  • Celá čísla (Integer)
  • Čísla s plovoucí desetinnou čárkou (Floating-point numbers)
  • Boolean hodnoty (Boolean)
  • Znaky (Character)

Abstraktní:

  • Pole (Array): Seřazená kolekce prvků jednoho typu, přístup přes index s konstantní časovou složitostí.
  • Související seznam (Linked List): Kolekce uzlů, z nichž každý obsahuje data a odkaz na další uzel. Efektivní přidávání/odstraňování na začátku/konci, přístup přes index - $O(n)$.
    • Jednosměrný (Singly Linked List)
    • Dvousměrný (Doubly Linked List)
    • Kruhový (Circular Linked List)
  • Zásobník (Stack): Datová struktura LIFO (Last-In, First-Out). Operace: push (přidání), pop (odstranění), peek (zobrazení 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): Datová struktura FIFO (First-In, First-Out). Operace: enqueue (přidání), dequeue (odstranění), peek (zobrazení první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
        }
    }
    
  • Hash tabulka (Hash Table) / Slovník (Dictionary) / Asociační pole (Associative Array): Kolekce párů "klíč-hodnota", umožňující efektivní vyhledávání, přidávání a mazání podle klíče pomocí hashovací funkce.
    var dictionary = [String: Any]() // Příklad slovníku ve Swift
    dictionary["key1"] = "value1"
    let value = dictionary["key1"]
    
  • Množina (Set): Neseřazená kolekce unikátních prvků. Podporuje operace: přidání, odstranění, kontrola existence, sjednocení, průnik, rozdíl.
    var set: Set<Int> = [1, 2, 3] // Příklad množiny ve Swift
    set.insert(4)
    let containsTwo = set.contains(2)
    
  • Strom (Tree): Hierarchická struktura dat, skládající se z uzlů spojených hranami. Má kořenový uzel a potomky.
    • Binární strom (Binary Tree)
    • Binární vyhledávací strom (Binary Search Tree - BST)
    • Vyvážený binární strom (Balanced Binary Tree) - AVL, červené-černé stromy.
    • B-strom (B-Tree)
  • Graf (Graph): Sada vrcholů (uzlů) a hran (vazeb), které spojují vrcholy. Může být orientovaný nebo neorientovaný, vážený nebo nevážený.

Porozumění těmto datovým strukturám je klíčové pro psaní efektivního a škálovatelného kódu. Výběr správné datové struktury závisí na požadavcích na výkon operací (vyhledávání, vkládání, mazání) a charakteru dat.