O objetivo da estrutura de dados é organizar, processar, recuperar e armazenar os dados de maneira apropriada. Por mais simples ou mais rebuscada que seja desenvolvida a estrutura de dados, partimos da premissa de que são projetados para organização com fim específico, de maneira que possam ser acessados e aperfeiçoados adequadamente.

Na programação, cada estrutura de dados pode conter informações sobre os valores, seus respectivos relacionamentos entre dados, funções que trabalham diversos algoritmos, buscas e padrões específicos que busca eficiência e facilidades de acesso, além de operações que determinam propriedades de necessidades especiais para manuseio de Big Data e facilitar a implementação e uso.

Entende-se que algoritmo manipula o dado, portanto, quando organizados de maneira assertiva determinam uma forma, ou seja uma "Estrutura de dados".

A maneira como são parametrizados e organizados confere individualidade a estrutura, podendo oferecer vantagens competitivas e torna o código-fonte mais conciso e inteligível. As estruturas dos dados podem ser classificadas por seus atributos, podendo ser:

Linear ou não linear: é descrita pela sequência cronológica, em matriz ou sequência não ordenada, a exemplo da escala de gráficos.

Homogêneo ou Não homogêneo: detalha se todos os itens de dados de repositórios são do mesmo tipo ou não.

Estático e dinâmico: detalha como estão compilados sendo, o estático de tamanho e propriedades fixas e dinâmico que possui tamanhos e memórias que podem expandir de acordo com a sua utilização.

Para aprofundarmos o entendimento destas estruturas, é importante entendermos também o conceito do ponteiro que, basicamente  é um objeto cujo valor aponta para outro valor por meio de um endereço de memória. Contudo, a definição da estrutura de dados e a maneira como os ponteiros serão utilizados, ocorrerão em decorrência dos tipos de operações ou de algoritmos que serão empregados e incluem os seguintes tipos:

Matrizes (em inglês, array) - são armazenadas em uma coleção de itens em locais de memória contínua para que sejam calculados e recuperados. Também são fixas ou flexíveis em comprimento.

Pilhas (em inglês, stack)- armazena uma coleção de itens lineares (lista) em que as operações são aplicados, como, por exemplo, durante a execução de um programa, para o armazenamento de valores e também para conter o endereço de retorno do trecho de programa que chamou a função em execução. Uma pilha é uma lista linear em que o primeiro objeto a entrar é o último objeto a sair, este conceito é conhecido como FILO (em inglês, first in last out).

Filas - armazena uma coleção de itens (lista) equivalente a uma pilha; no entanto, a ordem de operação pode ser a primeira a entrar primeiro a sair, que é equivalente ao FIFO (em inglês, first in, first out) . Esta estrutura é utilizada para implementar filas de espera, de maneira que elementos são colocados em fila e retirados e ou processados em ordem de chegada. A ideia fundamental da fila é que só são inseridos elementos no final da fila e só podem ser retirados elementos do início.

Listas vinculadas - armazena uma coleção de estruturas, chamadas "nós", onde cada elemento, ou nó, em uma lista vinculada contém um link ou um ponteiro para o próximo item na lista. Os vínculos podem ser em decorrência de ligações lógicas que são armazenados como parte dessas estruturas.

Árvores - uma árvore armazena uma coleção de itens de maneira abstrata e hierárquica, de maneira que seus elementos possam ser encontrados somente acima ou abaixo de outros elementos da árvore. Toda a árvore possui o elemento raiz, que pode possuir subvalores para outros elementos denominados filhos..

Grafos - considera as relações entre os objetos de um determinado conjunto. A partir do armazenamento de uma coleção de itens de maneira não linear, são constituídos de um conjunto finito de nós, também conhecidos como vértices, e linhas que os conectam, também conhecidos como arestas. São utilizados para representar, por exemplo, redes de computadores.

Árvore de busca  ou árvore de pesquisa- é uma estrutura de dados que armazena seqüências de caracteres usada para localizar chaves específicas de um conjunto.  A vantagem das árvores de busca é que seu tempo de busca eficiente. As árvores de pesquisa geralmente são utilizadas para implementar matrizes associativas,

Tabelas de hash - essencialmente relaciona chaves de pesquisa a valores. Desta forma, armazena uma coleção de itens para que a partir de uma chave simples, possa processar uma busca rápida e obter o valor desejado. Este tipo,  também conhecidos como tabelas de dispersão ou de espalhamento, são utilizadas para rodar vetores associativos, conjuntos e caches.

Com as grandes quantidades de dados interconectados e armazenados, podem ser consideradas como estruturas complexas ou não primitiva. Já as estruturas de dados mais simples que compreendem números inteiros, flutuantes, boleanos e caracteres são tidas como estruturas primitivas ou básicas.


As estruturas de dados geralmente são usadas para implementar as formas físicas dos tipos de dados abstratos. Isso pode ser traduzido em uma variedade de aplicativos.

Mesmo que as estruturas de dados sejam centradas no processamento sequencial e uso de ponteiros, em muitos aspectos, como na programação para o uso de linguagens Javascript, Python, ou Ruby, há ênfase em padrões simples, reutilização de implementações otimizadas, e processamento paralelo/assíncrono, em contraste com a teoria básica de estrutura de dados.

Para a modelagem e otimização de métodos de aprendizagem de máquina é necessário o uso de técnicas e modelos em que são feitas abstrações de dados (conjunto de dados e operações executados sobre os dados), ao mesmo tempo que as estruturas de dados homogêneas e tipos de dados primitivos estão associados ao processamento de dados gerados de sistemas reais ou modelos.

Com a imensa quantidade de dados gerados, as estruturas de dados são essenciais para o gerenciamento eficiente das informações mantidas em bancos de dados ou em serviços de indexação. Uma boa execução na estruturação de dados pode contribuir muito para a diminuição da memória, velocidade de processamentos e resposta às suas inter-conexões, por isso exige manutenção, conservação e aperfeiçoamento constante.

Por fim, é fundamental que as estruturas de dados sejam selecionadas de acordo com cada tarefa. A escolha errada pode resultar em lentidão do tempo de execução e até mesmo códigos sem respostas. Não esqueça de considerar onde o dado será colocado, como será classificado, o tipo de informação que será armazenada e a quantidade de memória que deve ser alocada para os dados.