.NET
- Estrutura de dados : conceitos básicos
![]() |
Hoje vamos tratar de um conceito muito importante que é a estrutura de dados. |
Qual a primeira coisa que vem à sua mente se eu perguntar a você: 'O que é uma estrutura de dados ?'
Que tal começar com algumas definições formais como :
"Estrutura de dados é o ramo da computação que estuda os diversos mecanismos de organização de dados para atender aos diferentes requisitos de processamento. "
ou
"Uma Estrutura de Dados consiste em uma organização de dados na memória de um computador ou em um dispositivo de armazenamento, de modo que esses dados possam ser utilizados de forma eficiente."
ou ainda
Uma estrutura de dados (ED), em ciência da computação, é uma coleção tanto de valores (e seus relacionamentos) quanto de operações (sobre os valores e estruturas decorrentes). É uma implementação concreta de um tipo abstrato de dado (TAD) ou um tipo de dado (TD) básico ou primitivo. ( https://pt.wikipedia.org/wiki/Estrutura_de_dados)
Juntando os conceitos podemos dizer que uma estrutura de dados é uma forma de descrever e relacionar um conjunto de informações de maneira organizada de forma a ser possível utilizar essas informações da melhor forma possível.
E como temos muitos tipos de informações, podemos ter diversos tipos de estrutura de dados que podem ser usadas para diferentes propósitos, desde estrutura de dados mais simples onde podemos ter apenas um tipo de dados armazenado até estruturas mais complexas usadas para representar arranjos de dados específicos.
A seguir temos as principais estrutura de dados:
Vetores ou arrays - são estruturas de dados lineares e estáticas, compostas por um número finito de elementos de um determinado tipo de dados.
Permitem realizar as seguintes operações :
adição e pesquisa de novos elementos de forma aleatória
acessar os elementos através de índices
carregar dados de tipos específicos
Exemplo de como criar um array unidimensional usando a linguagem C# :
using System; using System.Collections; namespace Vetores { internal class Program { private static void Main(string[] args) { var vetor = new ArrayList(); vetor.Add(1); vetor.Add(20); vetor.Add(30); vetor.Add(4); vetor.Add(100); foreach (var item in vetor) Console.Write(item + ","); Console.ReadLine(); } } } |
Listas - São estrutura de dados lineares. Uma lista ligada ou encadeada é linear e dinâmica, sendo composta por nós que apontam para o próximo elemento da lista, exceto o último elemento.
Apresenta as seguintes características:
FIFO (First-In-First-Out)
Permite adição e remoção de elementos
O elemento a ser removido é sempre o primeiro a entrar
As operações de entrada de saída sempre ocorrem nas extremidades
Exemplo de como criar uma lista e adicionar elementos na linguagem C#:
using System; using System.Collections.Generic; namespace Lista { class Program { static void Main(string[] args) { List<int> ListaNumeroPrimos = new List<int>(); ListaNumeroPrimos.Add(1); ListaNumeroPrimos.Add(3); ListaNumeroPrimos.Add(5); ListaNumeroPrimos.Add(7); foreach (var item in ListaNumeroPrimos) Console.Write(item + ","); } } }
|
Filas - São estrutura de dados baseadas no princípio FIFO (First-In-First-Out), onde os elementos inseridos no início serão os primeiros a serem removidos.
Possui duas funções básicas : Enqueue que adiciona um elemento ao final da fila e Dequeue que remover o elemento do início da fila.
Exemplo de como criar e adicionar elementos a uma fila na linguagem C#:
using System; using System.Collections.Generic; namespace Fila { class Program { static void Main(string[] args) { Queue<int> Fila = new Queue<int>(); Fila.Enqueue(1); Fila.Enqueue(2); Fila.Enqueue(3); Fila.Enqueue(4); foreach (var id in Fila) Console.Write(id); } } } |
Pilhas - São estrutura de dados baseadas no princípio LIFO (Last-In-First-Out) - no qual os dados inseridos por último na pilha serão os primeiros a serem removidos.
Existem duas funções que se aplicam às pilhas : Push - Insere um dado no topo da pilha e Pop que remove o elemento do topo da pilha.
using System; using System.Collections.Generic; namespace Pilha
foreach (var item in pilha)
Console.ReadLine(); |
Árvore - É uma estrutura de dados na qual cada elemento tem um ou mais elementos associados. Uma árvore possui apenas uma raiz, e, os elementos associados a cada nó da árvore são habitualmente chamados de filhos desses nós, onde os nós sem filhos são chamados de folhas.
Características de uma árvore:
Raiz - O nó inicial da árvore
Grau - O número de filhos que um nó possui
Nível - A distância de um nó até a raiz
Altura - O maior nível da árvore
Folha - O nó que não possui filho
Operações suportadas em uma estrutura de dados do tipo árvore:
Inserir nó na árvore
Remover um nó da árvore
Consultar os nós da árvore
Na figura abaixo temos uma árvore com nove nós onde A é o nó raiz a direita e uma estrutura à esquerda que não é uma árvore:
![]() |
Árvore com 9 nós sendo o nó A o nó raiz |
![]() |
Estrutura que não é uma árvore |
A implementação de uma árvore na linguagem C# é mais complexa e tomaria tempo e espaço assim veja o meu artigo que mostra como criar uma árvore binária na linguagem VB .NET: Árvore Binária
"Em Deus está a minha salvação e a minha
glória; a rocha da minha fortaleza, e o meu refúgio estão em Deus."
Salmos 62:7
Referências:
C# - Tasks x Threads. Qual a diferença
C# - Programação Assíncrona como : Asycn e Task
C# - O Struct Guid - Macoratti.net