Intern
Quais são as estruturas de dados existentes?
sobes.tech IA
Resposta da IA
Existem as seguintes estruturas de dados principais:
Primitivas:
- Números inteiros (Integer)
- Números de ponto flutuante (Floating-point numbers)
- Valores booleanos (Boolean)
- Caracteres (Character)
Abstratas:
- Array: Coleção ordenada de elementos do mesmo tipo, acesso por índice com tempo constante.
- Lista ligada (Linked List): Coleção de nós, cada um contendo dados e uma referência ao próximo nó. Inserções/exclusões eficientes no início/fim, acesso por índice - $O(n)$.
- Lista ligada simples (Singly Linked List)
- Lista duplamente ligada (Doubly Linked List)
- Lista circular (Circular Linked List)
- Pilha (Stack): Estrutura LIFO (Last-In, First-Out). Operações: push (adicionar), pop (remover), peek (ver o elemento superior).
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 } } - Fila (Queue): Estrutura FIFO (First-In, First-Out). Operações: enqueue (adicionar), dequeue (remover), peek (ver o primeiro elemento).
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 } } - Tabela hash (Hash Table) / Dicionário (Dictionary) / Array associativo (Associative Array): Coleção de pares "chave-valor", permitindo busca, inserção e remoção eficientes por chave usando função hash.
var dictionary = [String: Any]() // Exemplo de dicionário em Swift dictionary["key1"] = "value1" let value = dictionary["key1"] - Conjunto (Set): Coleção não ordenada de elementos únicos. Suporta operações: adição, remoção, verificação de existência, união, interseção, diferença.
var set: Set<Int> = [1, 2, 3] // Exemplo de conjunto em Swift set.insert(4) let containsTwo = set.contains(2) - Árvore (Tree): Estrutura hierárquica de dados, composta por nós ligados por arestas. Possui nó raiz e nós filhos.
- Árvore binária (Binary Tree)
- Árvore binária de pesquisa (Binary Search Tree - BST)
- Árvore binária balanceada (Balanced Binary Tree) - AVL, árvore vermelho-preto.
- Árvore B (B-Tree)
- Grafo (Graph): Conjunto de vértices (nós) e arestas (ligações), conectando vértices. Pode ser dirigido ou não, ponderado ou não.
Compreender essas estruturas de dados é fundamental para escrever código eficiente e escalável. A escolha da estrutura correta depende dos requisitos de desempenho (busca, inserção, remoção) e da natureza dos dados.