Data structure and algorithms

Introdução

Estrutura de dados

São estruturas organizadas de dados na memória (volátil) de um computador ou qualquer dispositivo de armazenamento, de forma que os dados possam ser usados e manipulados da forma correta.

Principais estruturas de dados

Vetor (Array)

Estrutura uni-dimensional e indexada que armazena dados do mesmo tipo, possui tamanho fixo e a indexação sempre inicia em zero e seus campos podem ser acessados por meio do índice.

Matriz (Array)

Estrutura multi-dimensional e indexada que armazena dados do mesmo tipo, possui tamanho fixo e a indexação sempre inicia em zero e seus campos podem ser acessados por meio do índice.
Em outras palavras, é um vetor de vetores, ou seja, um vetor que possui duas ou mais dimensões.

Registro (Record)

Estrutura especializada que armazena dados de tipos diferentes.
Toda estrutura de registro deve ser nomeada, e seus campos podem ser acessados por meio do operador (.) ponto.
Ex: Objetos: book.author, book.title, book.price, etc.

Lista (List)

Estrutura que armazena dados de determinado tipo em uma ordem especifica e possui tamanho variável.
Existem dois tipos de listas:

Pilha (Stack)

Estrutura que armazena dados de tipos diferentes e serve como uma coleção de elementos onde somente um item da lista pode ser lido ou removido por vez.
Existem dois tipos de pilhas: Operações: push é inserir e pop remover elementos da pilha.

Fila (Queue)

Estrutura FIFO (First in first out) ou PEPS (Primeiro que entra, primeiro que sai).
Inserção sempre a direita e remoção sempre a esquerda.

Árvore (Tree)

Estrutura que organiza os dados de forma hierárquica.
Sempre vai existir o elemento raiz que inicia a árvore, e a partir dele existem as ramificações com os elementos subordinados, chamados de nós ou folhas. A pesquisa é realizada passando nó por nó até chegar ao nó desejado.

Tabela Hash (Hash Table)

Estrutura de dispersão ou espelhamento, associação de valores à chaves.
É uma generalização da ideia de array, usa uma função denominada Hashing para espalhar os dados de forma não ordenada dentro do "array" que define a tabela.

Grafos (Graph)

Estruturas complexas, não lineares e relacionais entre objetos, onde os objetos são vértices ou nós e os relacionamentos são as arestas.
Permite andar para todos os lados.

References