Sobes.tech
Intern

Кои съществуват структури от данни?

sobes.tech AI

Отговор от AI

Съществуват следните основни структури от данни:

Примитивни (Primitive):

  • Цели числа (Integer)
  • Числа с плаваща запетая (Floating-point numbers)
  • Булеви стойности (Boolean)
  • Символи (Character)

Абстрактни (Abstract):

  • Масив (Array): Подредена колекция от елементи от един тип, достъп чрез индекс с постоянна времева сложност.
  • Свързан списък (Linked List): Колекция от възли, всеки от които съдържа данни и препратка към следващия възел. Ефективно добавяне/премахване в началото/края, достъп чрез индекс - $O(n)$.
    • Едносвързан (Singly Linked List)
    • Двусвързан (Doubly Linked List)
    • Кръгъл (Circular Linked List)
  • Стек (Stack): Структура от данни LIFO (Last-In, First-Out). Операции: push (добавяне), pop (премахване), peek (преглед на горния елемент).
    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
        }
    }
    
  • Опашка (Queue): Структура от данни FIFO (First-In, First-Out). Операции: enqueue (добавяне), dequeue (премахване), peek (преглед на първия елемент).
    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 Table) / Дърво (Dictionary) / Асоциативен масив (Associative Array): Колекция от двойки "ключ-стойност", позволяваща ефективно търсене, добавяне и изтриване по ключ, използвайки хеш функция.
    var dictionary = [String: Any]() // Пример за речник в Swift
    dictionary["key1"] = "value1"
    let value = dictionary["key1"]
    
  • Множество (Set): Ненасочена колекция от уникални елементи. Поддържа операции: добавяне, изтриване, проверка за съществуване, обединение, пресичане, разлика.
    var set: Set<Int> = [1, 2, 3] // Пример за множество в Swift
    set.insert(4)
    let containsTwo = set.contains(2)
    
  • Дърво (Tree): Иерархична структура от данни, състояща се от възли, свързани с ребра. Има коренов възел и потомци.
    • Двоично дърво (Binary Tree)
    • Двоично дърво за търсене (Binary Search Tree - BST)
    • Балансирано двоично дърво (Balanced Binary Tree) - AVL, червено-черно дърво.
    • B-дърво (B-Tree)
  • Граф (Graph): Съставено от върхове (възли) и ребра (връзки), които свързват върховете. Може да е насочен или ненасочен, с тегла или без.

Разбирането на тези структури от данни е критично за писане на ефективен и мащабируем код. Изборът на правилната структура от данни зависи от изискванията за производителност на операциите (търсене, вмъкване, изтриване) и характера на данните.