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.