Sobes.tech
Intern

Milyen adatstruktúrák léteznek?

sobes.tech MI

Válasz az MI-től

A következő alapvető adatszerkezetek léteznek:

Primitív (Primitive):

  • Egész számok (Integer)
  • Lebegőpontos számok (Floating-point numbers)
  • Logikai értékek (Boolean)
  • Szimbólumok (Character)

Absztrakt (Abstract):

  • Tömb (Array): Rendezett elemek gyűjteménye egy típusból, hozzáférés index alapján állandó idő alatt.
  • Láncolt lista (Linked List): Csúcsok gyűjteménye, amelyek mindegyike tartalmaz adatokat és hivatkozást a következő csúcsra. Hatékony beszúrás/eltávolítás elején/végén, index szerinti hozzáférés - $O(n)$.
    • Egyszerű láncolt lista (Singly Linked List)
    • Kétszintű láncolt lista (Doubly Linked List)
    • Körkörös láncolt lista (Circular Linked List)
  • Verem (Stack): LIFO (Last-In, First-Out) adatszerkezet. Műveletek: push (hozzáadás), pop (eltávolítás), peek (felső elem megtekintése).
    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
        }
    }
    
  • Sor (Queue): FIFO (First-In, First-Out) adatszerkezet. Műveletek: enqueue (beszúrás), dequeue (eltávolítás), peek (első elem megtekintése).
    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-tábla (Hash Table) / Szótár (Dictionary) / Asszociatív tömb (Associative Array): Kulcs-érték párok gyűjteménye, hatékony keresést, hozzáadást és törlést tesz lehetővé kulcs szerint, hash-függvény segítségével.
    var dictionary = [String: Any]() // Példa szótár Swift-ben
    dictionary["key1"] = "value1"
    let value = dictionary["key1"]
    
  • Halmaz (Set): Rendezetlen gyűjtemény egyedi elemekből. Műveletek: hozzáadás, törlés, létezés ellenőrzése, unió, metszet, különbség.
    var set: Set<Int> = [1, 2, 3] // Példa halmaz Swift-ben
    set.insert(4)
    let containsTwo = set.contains(2)
    
  • Fa (Tree): Hierarchikus adatszerkezet, csomópontokból áll, amelyek éleken keresztül kapcsolódnak. Van gyökércsomópont és leszármazottak.
    • Bináris fa (Binary Tree)
    • Bináris keresőfa (Binary Search Tree - BST)
    • Egyensúlyozott bináris fa (Balanced Binary Tree) - AVL, vörös-fekete fa.
    • B-fa (B-Tree)
  • Graf (Graph): Csúcsok (csomópontok) és élek (kapcsolatok) halmaza, amelyek összekötik a csúcsokat. Lehet irányított vagy irányítatlan, súlyozott vagy súlyozatlan.

Ezeknek az adatszerkezeteknek a megértése kritikus a hatékony és skálázható kód írásához. A megfelelő adatszerkezet kiválasztása a műveletek (keresés, beszúrás, törlés) teljesítményigényeitől és az adatok jellegétől függ.