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.