Sobes.tech
Intern

Koje postoje strukture podataka?

sobes.tech АИ

Одговор од АИ

Postoje sledeće osnovne strukture podataka:

Primitivne (Primitive):

  • Celi brojevi (Integer)
  • Brojevi sa pokretnom zarezom (Floating-point numbers)
  • Boolean vrednosti (Boolean)
  • Simboli (Character)

Apstraktne (Abstract):

  • Niz (Array): Uređena kolekcija elemenata istog tipa, pristup putem indeksa sa konstantnim vremenom.
  • Povezani spisak (Linked List): Kolekcija čvorova, od kojih svaki sadrži podatke i referencu na sledeći čvor. Efikasno dodavanje/uklanjanje na početku/kraju, pristup putem indeksa - $O(n)$.
    • Jednostruki povezani (Singly Linked List)
    • Dvosmerni povezani (Doubly Linked List)
    • Ciklični (Circular Linked List)
  • Stek (Stack): Struktura podataka LIFO (Last-In, First-Out). Operacije: push (dodavanje), pop (uklanjanje), peek (pregled vrhunskog elementa).
    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
        }
    }
    
  • Red (Queue): Struktura podataka FIFO (First-In, First-Out). Operacije: enqueue (dodavanje), dequeue (uklanjanje), peek (pregled prvog elementa).
    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 tabela (Hash Table) / Rečnik (Dictionary) / Asocijativni niz (Associative Array): Kolekcija parova "ključ-vrednost", omogućava efikasno pretraživanje, dodavanje i brisanje po ključu koristeći hash funkciju.
    var dictionary = [String: Any]() // Primer rečnika u Swift-u
    dictionary["key1"] = "value1"
    let value = dictionary["key1"]
    
  • Skup (Set): Nenaslovljena kolekcija jedinstvenih elemenata. Podržava operacije: dodavanje, brisanje, provera postojanja, unija, preseci, razlika.
    var set: Set<Int> = [1, 2, 3] // Primer skupa u Swift-u
    set.insert(4)
    let containsTwo = set.contains(2)
    
  • Drvo (Tree): Hijerarhijska struktura podataka, sastoji se od čvorova povezanih ivicama. Ima korenski čvor i potomke.
    • Binomno drvo (Binary Tree)
    • Binomno pretraživačko drvo (Binary Search Tree - BST)
    • Uravnoteženo binomno drvo (Balanced Binary Tree) - AVL, crveno-crno drvo.
    • B-drvo (B-Tree)
  • Graf (Graph): Skup vrhova (čvorova) i ivica (veza), koje povezuju vrhove. Može biti usmeren ili neusmeren, sa težinama ili bez.

Razumevanje ovih struktura podataka je ključno za pisanje efikasnog i skalabilnog koda. Izbor prave strukture podataka zavisi od zahteva za performanse operacija (pretraživanje, umetanje, brisanje) i karakteristika podataka.