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): Съставено от върхове (възли) и ребра (връзки), които свързват върховете. Може да е насочен или ненасочен, с тегла или без.
Разбирането на тези структури от данни е критично за писане на ефективен и мащабируем код. Изборът на правилната структура от данни зависи от изискванията за производителност на операциите (търсене, вмъкване, изтриване) и характера на данните.