Estruturas de Dados em linguagem C – Parte I: Pilhas

Em janeiro fiz a matéria de Estrutura de Dados I no curso de verão da UFES. Durante o curso aprendemos sobre as estruturas de dados: pilhas,  filas,  listas e árvores. Implementei as estruturas usando a linguagem C. Vou postar um pouco do que aprendi sobre cada uma delas em partes.

PARTE I: PILHAS

A pilha ou stack é uma estrutura de dados bem simples. A sigla LIFO (last in, first out) caracteriza seu funcionamento. Todos os elementos são acessados pelo topo. Ou seja, ao inserir/empilhar um novo elemento ele passa a ser o topo da nossa pilha. E o único elemento que pode ser excluído/desempilhado é o elemento do topo. Os elementos são removidos na ordem inversa àquela em que foram inseridos. Podemos usar como exemplo uma  pilha de livros, no qual ao se colocar diversos elementos uns sobre os outros, se quisermos pegar o livro mais abaixo deveremos tirar todos os livros que estiverem sobre ele. Essa estrutura é uma das mais utilizadas na programação sendo também utilizada para acesso em vários hardwares de máquinas modernas. As principais funções implementadas na pilha para manipular os elementos são: PUSH e POP, utilizadas para empilhar e desempilhar, respectivamente.
A figura abaixo mostra o funcionamento conceitual de uma pilha:





Explicação da figura passo a passo:
I  - Push(a) – Empillha elemento “a”, que passa a ser o topo
II  - Push(b) – Empillha elemento “b”, que passa a ser o topo
III  - Push(c) – Empillha elemento “c”, que passa a ser o topo
IV  - Pop(c)  - Dempillha elemento “c”, e retorna ele
V  - Push(d) – Empillha elemento “d”, que passa a ser o topo
VI  - Pop(d)  - Dempillha elemento “d”, e retorna ele


Há várias implementações possíveis de uma pilha, que se distinguem pela natureza dos seus elementos, pela maneira como os elementos são armazenados e pelas operações disponíveis para o tratamento da pilha.
Como já disse antes, utilizei a linguagem C para implementar as pilhas. Implementei dois tipos: pilha estática e pilha dinâmica.
A diferença entre elas é simples: na pilha estática, um vetor é utilizado para armazenamento dos dados, ou seja, há uma quantidade fixa de elementos. Já na pilha dinâmica os elementos são alocados dinamicamente e armazenados em uma lista encadeada.

3 responses to “Estruturas de Dados em linguagem C – Parte I: Pilhas”

  1. tarsis azevedo

    16th fev, 11

    Mto manero o post! xD

    Parabens!

    ps: uma dica: coloca o codigo no blog e um teste pra mostrar como funciona :P

  2. Andressa Agnhesi

    16th fev, 11

    Obrigada pelas dicas. ;)

  3. Francisco Souza

    16th fev, 11

    Parabéns de novo!

    Keep hacking ;)

Leave a reply

(Required)
(Required, but never shared)

Spam protection by WP Captcha-Free