.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 :

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:

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.


Exemplo de como criar  e adicionar elementos a uma pilha na linguagem C# :
 
using System;
using System.Collections.Generic;

namespace Pilha
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack<int> pilha = new Stack<int>();
            pilha.Push(1);
            pilha.Push(2);
            pilha.Push(3);
            pilha.Push(4);

            foreach (var item in pilha)
                Console.Write(item + ",");

            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:

Operações suportadas em uma estrutura de dados do tipo á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:


José Carlos Macoratti