aula 223

Curso de Programação C | Estruturas de dados dinâmicas – Pilhas, Filas, Listas e Árvores

Dando continuidade ao nosso Curso de Programação C, iniciamos nesta aula um novo módulo sobre estruturas de dados dinâmicas como as Pilhas, as Filas, as Listas e as Árvores.

Por que estruturas de dados DINÂMICAS?

O primeiro ponto importante aqui é a palavrinha dinâmica. Por que estruturas de dados DINÂMICAS? Diferentemente dos vetores e das matrizes, que possuem tamanho fixo, uma estrutura de dado dinâmica pode crescer e diminuir enquanto novos elementos são inseridos e/ou removidos.

Quando criamos um vetor com tamanho 100, por exemplo, este vetor pode armazenar apenas 100 elementos. Caso seja necessário armazenar mais de 100 elementos precisamos criar um novo vetor maior ou alterar o tamanho do nosso vetor e compilar o código novamente.

Em uma estrutura de dados dinâmica a memória vai sendo alocada conforma a necessidade. Assim, temos os conceitos de inserção e remoção. Quando inserimos um elemento em nosso estrutura, uma nova região de memória é alocada e “conectada” à nosso estrutura por meio de ponteiros. Quando removermos um elemento, a região de memória associada a ele é liberada.

Quais estruturas de dados dinâmicas estudaremos?

Dentre as principais estruturas de dados dinâmicas que veremos aqui no curso estão as:
– pilhas;
– filas;
– listas encadeadas;
– árvores.

A primeira estrutura de dados dinâmica que estudaremo é a estrutura de dados PILHA devido sua simplicidade. Esta estrutura segue a ideia de uma pilha no mundo real e possui apenas duas operações, empilhar (push) e desempilhar (pop).

Assim como normalmente acontece no mundo real, ao inserir algo em uma pilha, essa inserção sempre ocorre no topo e, ao retirar algo da pilha, essa remoção também sempre ocorre no topo. Por isso a estrutura pilha é do tipo LIFO – Last-in First-out, ou seja, o último a entrar é o primeiro a sair.

Como mencionei, ao inserir um novo dado em uma estrutura dinâmica, uma nova região de memória é alocada e “ligada” em nossa estrutura de dados por meio de ponteiros. Isso pode ser feito criando estruturas que possuirão ao menos duas partes, um campo para o dado e outro campo para um ponteiro para uma estrutura do mesmo tipo, normalmente chamada de nó.

// exemplo de uma estrutura nó com um campo inteiro e um ponteiro

typedef struct no{
    int data;
    struct no *proximo;
}No;

Na próxima aula vamos ver na prática como funciona uma estrutura de dados dinâmica implementando nossa primeira pilha.

Este post tem um comentário

  1. Francisco Alves

    Muito bom o conteúdo

Deixe um comentário

4 × 3 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.