
Estrutura de dados é uma coleção de valores discretos ou contínuos que transmitem informações, quantidade, qualidade, fatos e estatísticas.
- É um “conjuntos de dados organizados” para serem processados pelo computador ou pela mente.
- São insumos para algoritmos de computadores, como também formas de estruturar, imaginar, visualizar, memorizar informações na mente humana.
- Computador e mente humana estão intrinsicamente conectados … a computação modela e imita a mente humana.
- Na comoputação e processamento de dados é necessário um casamento perfeito entre uma estrutura de dados e seu algoritmo, e vice versa.
- Estrututas de dados podem ser listas, pilhas, filas, matrizes, árvores e grafos.
- O conceito de estrutura de dados vai muito além da computação, entra nos domínios das ciências cognitivas, iem particular da psicologia cognitiva.
- No domínio da psicologia cognitiva as estruturas são usadas para modelar a cognição, explorar modelos ou esquemas de como as pessoas adquirem, peercebem, processam, armazenam e utilizam informações.
- A mente humana usa “estruturas cognitivas” para interpretar a realidade e resolver problemas, atuando de forma análoga a um sistema de processamento de computado.
- Do ponto de vista de gestão do conhecimento, a estrutura de dados influi diretamente em processos (algoritmos) que siportam a eficiência na organização, gerenciamento, armazenamento, processamento e apresentação de dados, informações e conhecimento.
- Na realiddae o computador e suas estururas e algoritmos imitam a cognição humana e através da tecnologia e axpande.
- Toda estrutura de dados tem uma representação mental clara e simples, que com um pouco de observação e análise, nos ajuda a pensar racionalmente e espacialmente.
- Uma estrutura de dados, computacional e mental, de uma forma geral, organiza valores, relações entre valores, funções ou operações aplicadas a cada célula da estrutura.
- Existem vários tipos de estruturas de dados tal como ilustrado na figura (que é uma estrutura do tipo arvore).
- Estruturas de dados podem ser lineares ou não.
- Quando lineares podem ser estáticas, como as matrizes, e dinámicas como as listas, pilhas e filas.
- Cada estutura tem vantagens e desvantagens, em termos de memória, tempo de processamento para coleta, armazenamento e recuperação.
- Existem muitas relações e analogias que valem ser obdervadas e exploradas entre a mente e a computação e são exploradas pela ciência da computação –
- para o melhor uso da mente, computação e inyteligência artificial.
- Por exemplo as estruturas de dados são comparáveis á memória humana.
- A forma como a memória retém e recupera informações pode ser comparada à eficiência de diferentes estruturas de dados na busca por informações.
- Esquemas mentais podem ser representadas po estruturas de dados mentais ou conjuntos de ideias sobre um assunto, que guiam a percepção e o pensamento.
- Listas, pilhas e filas são “estrutras sequenciais que porcessam as tarefas por ordem de chegada.
- Já os grafos e árvores, são semelhantes à forma como a mente humana organiza o conhecimento em redes de conceitos interconectados, tal como a estrutura da figura sobre tipos ou categorias de estruturas.
- A modelagem de dados, organização hieráquica e categorização, facilita entender o “design do sistema”, o seu formato geral, relações entre seus componentes ou partes e facilita a compreensão mais intuitiva para os humanos.
A estrutura de dados pode ser vista como um “interface” ou linguagem, modelo ou esquema entre a mente e a compoutação e inyteligência afrtificial
- mas devem tyanbém serem aproveitada e conscientizxadas como ferramentas cognit=ivas que ajudam a pensar, refletir, normatizar daos, informação e conhecimento.
- Diante disso, vale analisar e compreender o ganho cognitivo que podemos obter sabendo usar de forma mais inteligente (algoritmica) essas “estruturas mentais”.
- A pergunta é, quais os contextos, situções e aplicações que uma estrutura é melhor do que outra ou como ela nos ajuda a aumentar a nossa cognição?
Exemplos de Estruturas.
Lista … (n1, n2, n3, ….nk).

- Estrutura abstrata linear de elementos de dados.
- Heterogênea , … admite vários tipos ou naturezas de dados.
- Usada para representar redes de conjuntos de nós interconectados.
- A cada elemento da lista ( nó ou vértice), está associado um conjunto de dados e metadados.
- Cada elemento da lista aponta para outro elemento, formando uma cadeia, de fácil inserção e retirada de valores.
- Listas são muito usadas para gestão de escopo.
- Não aconselhável para algoritmos computacionais ou mentais (cognitivos) ou aplicações com um grande volume de dados.
- Exemplos de listas são os check lists nos seus vários formatos.
- É uma organização de dados através da enumeração para melhor visualização da informação.
- Facilitar a aquisição, memorização e recuperação de informações numa estrutura dinâmica e elástica.
- E diferente ou está em oposição aos vetores ou matrizes, que são estruturas de dados estáticas e não lineares
- Assim, uma lista pode ter virtualmente infinitos elementos, o que não é característica de uma matriz, com quantidade de linhas e colunas bem determinadas.
- Numa lista encadeada existem dois campos, um reservado para colocar o dado a ser armazenado e outro para apontar para o próximo elemento da lista (que podem ser vários).
Matriz (array ) … coleção não linear de elementos de dados aij, em formato tabular de i linhas e j colunas, índices usados para localizar e acessar qualquer forma célula de forma direta e não sequencial.
Estrutura de dados é uma abstração.
São formas ou formatos de representação de dados que podem ser quantitativos e/ou qualitativos para aumentar o desempenho do processamento e apresentação da informação, compreensão e aprendizagem.
É um componente linguagem, especificamente da sua sintaxe, que cuida das relações de concordãncia, subordinação e ordem dos argumentos (raciocínio) e enunciados (sumário, explicação).
Está no núcleio do sistema cognitivo humano, computacional e inteligência arA estrutura tificial.
A estrutura de dados que usamos, pensamos ou criamos espelha o modelo de pensamento ou algoritmo que usamos e influi diretamento no desempenho e compreensão da solução de problemas e tomada de decisões.
Afeta todas as funções cognitivas básicas como – atenção, percepção, pensamento, memória, linguagem, aprendizagem.
Todas as funções cognitivas e algoritmos comútacionais são afetadas e modelados e apresentam desempenho diferente para diferentes estruturas de dados ou modelagens mentasi que fazemos.
Um problema difícímo pode ser tornar bem mais ácil com a mudança da estrutura e linguagem da formulação e resolução adotadas.
iretamente o comportamento de pessoas e computadores.
O estudo,
Quando nos deparamos com uma estrutura de dados conhecida automaticamente adequamos o nosso pensamento, percepção e comportamento ao aobjeto do conhecimento.
É assim quando nos deparamos com várias diferentes estruturas de dados e informação como texto, tabela, mapa, check list,
Qual a diferença cognitiva?
Como podemos explorar esse entendimento e gerar vantagem copetitiva, agregar valor na interação com o objeto de cponhecimento e outros sujeitos.
Da mesma forma se comporta algoritmos computacionais. São dependentes de estruturas pré-concebidas.
O algoritmo computacional e o mental trabalham em função da estrutura do objeto de conhecimento e a estrutura de conhecimento em em função do algoritmo (ou sujeito).
O texto é um conjunto de palavras escritas comunicação humana , emocional, subjetiva
A variável é um componente matemático ou símbolo que representa um número arbitrário, quando passa por diferentes estados de grandeza.
Não existe uma estrutura melhor do que outra.
Cada um desses modelos, formatos de dados, estão fundamentados métodos, ferramentas técnicas, habilidadesformatos pressupõe um tipo de pensamento, uma forma algoritmica de pensar, formular problemas, soluções, monitorar, analisar
Matriz

Uma tabela de m linhas com n colunas.
Ordem específica.
Cada elemento da matriz (célula) pode ser ou não do mesmo tipo.
Os elementos são acessados por índices.
Podem ser de comprimento fixo ou redimensionável.
É um conjunto de vetores (matrizes de uma dimensão).
As matrizes são mais do que objetos estáticos, que gravam informações e dados.
Matrizes representam funções que agem em vetores transformando-os em outros vetores (tal como explora o aplicativo Excel).
Existem várias tipos de matrizes e várias operações entre matrizes, que permitem modelar e simular sistemas representados por matrizes.
Aplicações da Matriz

Matrizes são encontradas em todos os campos científicos.
Na teoria da probabilidade e estatística, matrizes estocásticas são usadas para descrever os conjuntos de probabilidades de eventos.
Em computação, as matrizes são usadas em algoritmos de rankeamento de páginas
Podem ser usadas para modelar sistemas estocáticos, crescimento populacional, grafos, etc.
Representar um conjunto de variáveis aleatórias, com a propriedade de que a distribuição de probabilidade do próximo estado depende apenas do estado atual e não da sequência de eventos.
A definição dessa propriedade, também chamada de memória markoviana, é que os estados anteriores são irrelevantes para a predição dos estados seguintes, desde que o estado atual seja conhecido.
Essa propriedade Cadeias de Markov têm muitas aplicações como modelos estatísticos de processos do mundo real.
Lista Vinculada
Arvore

- É uma estrutura de dados não linear, que descreve conexões (relacionamentos) de elementos (nós) de forma hieráquica (pai e filho).
- Não existe círculos ou loops, ou seja, nenhum nó pode ser seu próprio ancestral.
- É eficiente coputacionalmente.
- Fácil de representar e processar.
- Modela muitos problemas reais..
- Exemplos … processos, procedimentos, atividades, árvores genealógicas, algoritmos, estrutura de arquivo ou pastas, interfaces gráficas, banco de dados, sites na internet, etc, usam a estrutura de árvore.
- Uma árvore pode ser simplificadamente descrita como formada por nós raíz, ramos e folhas.
- É uma estrutura que facilita a recursividade.
- Árvores podem ser repreentadas por outras estruturas, tal como grafos, conjuntos e listas.
- Arvores binárias são muito usadas … onde um nó pai pode ter no máximo dois filhos.
Aplicações das Árvores
A estrutura de árvores é aplicada para organizar dados em várias situações e algoritmos.
- Mapear relações entre coisas, todo, parte, componente, subcomponente.
- Descrever sistemas de arquivo, estruturas de diretório.
- Definir sintaxe de linguagens de computador ou artificiais.
- Servir de modelo para processar linguagem natural.
- Modelar linguagens digitais.
- Servir de árvore de estrutura de dados de pesquisa.
- Computação gráfica.
- Estruturar e acessar banco de dados
- Aninhar conjuntos e hierarquias.
- Taxonomizar, categorizar e classificar
- Memorizar.
- Representar estruturas e hierarquias matemáticas.
- Definir ou pesquisar caminhos ou rotas num grafo.
- Posicionar e acionar subrotinas.
- Descrever roteiros e scripts.
- etc.
Indicadores e Operações em Árvore.
As árvores podem ser parametrizadas e gerar vários tipos de operações e indicadores.
- Tamanho da árvore … número de nós na árvore.
- Altura … distância mais longa do dó a uma folha.
- Profundidade … nível do nó, distância do nó a raiz.
- Vizinho … pai ou filho.
- Antecessor … nó acessível de filho para pai.
- Descendente … nó acessível pai para filho.
- Grau … número de filhos do nó.
- Gráu da árvore … grau máximo de um nó na árvore.
- Distância … número de arestas do caminho mais curto entre dois nós.
- Largura … número de nós em um nível.
- Folhagem … número de folhas.
- Floresta … conjunto de uma ou mais árvores disjuntas.
As estrutura de dados facilitam o acesso e o trabalho dos usuários aos dados de que precisam de maneira apropriada; Como exemplos de estruturas de dados temos: arrays, Linked List, Stack, Queue, etc.
A escolha de uma boa estrutura de dados torna possível realizar uma variedade de operações críticas de forma eficaz, e, uma estrutura de dados eficiente também usa espaço mínimo de memória e tempo de execução para processar a estrutura.
Uma estrutura de dados também define uma instância de ADT (ABSTRACT DATA TYPE) que é formalmente definido como um trio: [D,F,A], onde :
- D: Conjunto de domínio;
- F: o conjunto de operações
- A: o conjunto de axiomas;
A necessidade das estrutura de dados
A estrutura dos dados e a síntese do algoritmo são relativas entre si. A apresentação dos dados deve ser de fácil compreensão para que o desenvolvedor, assim como o usuário, possa fazer uma implementação eficiente da operação.
As estruturas de dados fornecem uma maneira fácil de organizar, recuperar, gerenciar e armazenar dados.
Os principais motivos para usar estrutura de dados:
– A modificação da estrutura de dados é fácil;
– Requer menos tempo;
– Economizar espaço de memória de armazenamento;
– A representação de dados é fácil;
A classificação e os tipos de Estruturas de Dados

Podemos ter:
- Estrutura de dados linear
Os elementos são organizados em uma dimensão, também conhecida como dimensão linear.
Exemplo: listas, pilha, fila, etc.
- Estrutura de dados não linear
Os elementos são organizados em dimensões um-muitos, muitos-um e muitos-muitos.
Exemplo: árvore, gráfico, tabela, etc.
A importância da complexidade dos algoritmos é dada pelo fato de que ela nos diz se o código está escalável. A maioria das estruturas de dados e algoritmos fundamentais já estão implementados na plataforma .NET, é importante saber como essas estruturas de dados funcionam e qual o tempo, complexidade de memória que elas possuem para as operações
básicas: elemento de acesso, elemento de busca, elemento de exclusão, elemento de adição.

A seguir veremos as estrutura de dados mais populares na plataforma .NET.
1- Stack
Stack ou Pilha é uma estrutura de dados implementada de duas maneiras, pilha simples no namespace System.Collections e pilha como estrutura de dados genérica no namespace System.Collections.Generic, o princípio da operação da estrutura da pilha é LIFO (último a entrar, primeiro a sair) ), o último elemento inserido é o primeiro que sai.

Stack ou Pilha é uma estrutura de dados linear que segue uma ordem particular na qual as operações são executadas. A ordem pode ser LIFO (Last In First Out) ou FILO (First In Last Out). Na pilha, todas as inserções e exclusões são permitidas em apenas uma extremidade da lista.
Exemplo de uma Stack bem simples :
Usando a coleção System.Collections.Generic podemos fazer assim:
As operações básicas a seguir são executadas na pilha:
- Initialize : Torna uma pilha vazia.
- Push: Adiciona um item na pilha. Se a pilha estiver cheia, diz-se que é uma condição de estouro;
- Pop: Remove um item da pilha. Os itens são exibidos na ordem inversa em que são enviados. Se a pilha estiver vazia, diz-se que é uma condição de Underflow;
- Peek ou Top: Retorna o elemento superior da pilha;
- isEmpty: Retorna true se a pilha estiver vazia, caso contrário, false;
Aplicações e usos do recurso Stack:
- Funcionalidade desfazer/refazer(Undo)
- Inversão de palavras;
- Empilhar para trás/frente em navegadores
- Algoritmos de retrocesso;
- Verificação de colchetes;
2. Queue
Assim como a Pilha, a Fila é uma estrutura linear que segue uma ordem específica na qual as operações são executadas. A ordem é First In First Out (FIFO).

Na fila, os itens são inseridos em uma extremidade e excluídos na outra extremidade. Um bom exemplo de fila é qualquer fila de consumidores para um recurso em que o consumidor que veio primeiro é atendido primeiro. A diferença entre pilhas e filas está na remoção.
Em uma pilha, removemos o item adicionado mais recentemente; em uma fila, removemos o item adicionado menos recente.
Exemplo de implementação usando uma fila simples usando o namespace System.Collections:
| Queue minhaFila = new Queue(); minhaFila.Enqueue(“Macoratti”); minhaFila.Enqueue(“.net”); minhaFila.Enqueue(” 2022″); Console.WriteLine(“minhaFila\n”); Console.WriteLine($”\tQuantidade :\t {minhaFila.Count}”); Console.Write(“\tValores: “); foreach (Object obj in minhaFila) Console.Write($”\t{obj}”); |
Principais operações realizadas em uma Queue ou Fila :
- Enqueue: Adiciona um item à fila. Se a fila estiver cheia, diz-se que é uma condição de estouro;
- Dequeue: Remove um item da fila. Os itens são exibidos na mesma ordem em que são enviados. Se a fila estiver vazia, diz-se que é uma condição de Underflow;
- Front: Pegue o item da frente da fila;
- Rear: Pegue o último item da fila;
Exemplo de implementação simples:
Se você precisa de uma estrutura de dados vinculada que permita adicionar e remover elementos com facilidade pode usar a classe genérica LinkedList<T>.
Para declarar uma lista vinculada, use o tipo genérico LinkedList<T>, em que T é o tipo de elemento.
Ao contrário dos outros tipos de coleção padrão, a lista vinculada não é apoiada por uma matriz. O tipo LinkedList <T> armazena valores em um tipo de wrapper chamado LinkedListNode<T>.
Cada nó na árvore fornece uma referência aos nós seguintes e anteriores, formando um link (portanto, lista vinculada) entre cada nó, em uma ordem linear. Essa estrutura torna essa lista bastante diferente para da List<T>.





