Você está na página 1de 17

J15B - ESTRUTURA DE DADOS

MÓDULO VI
Pilhas
Prof. M.Sc. Luiz Gustavo Miranda Pinto
luiz.pinto1@docente.unip.br
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Tópicos
• Introdução de Pilhas
• Definição de Pilhas
• Implementando uma Pilha Dinâmica
• Pilhas no Java

2
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Introdução de Pilhas
• Uma estrutura do tipo Pilha é uma sequência de elementos do mesmo
•  tipo, como as Listas e Filas. 
• Seus elementos possuem estrutura interna arbitrária

3
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Pilhas
• Uma Fila é um tipo especial de Lista onde inserções e exclusões ocorrem apenas no
início
• Sua rotina de acesso é do tipo LIFO (Last-In-First-Out)
• O último elemento que entra é o primeiro que sai
• Aplicações: infixa pós-fixa
a-b ab-
• Análise de expressões matemáticas
a-b*c abc*-
• Avaliação de expressões pós-fixas (a-b)*c ab-c*
• Converter expressões infixas para pós-fixas a+b*c^d-e abcd^*+e-
• Converter um número decimal para binário a*(b+c)*(d-g)*h abc+*dg-*h*
a*b-c*d^e/f+g*h ab*cde^*f/-gh*+
• etc...

4
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Pilhas
• Em uma Fila podemos realizar as seguintes operações básicas:
• Criação da pilha
• Destruição da pilha
• Inserção de um elemento no início (empilhar)
• Remoção de um elemento no início (desempilhar)
• Acesso ao elemento do início
• Essas operações irão depender se o tipo de alocação de memória será estática ou
dinâmica

5
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Pilhas
• Pilhas Estáticas: utilizam alocação estática
• O espaço de memória é alocado no momento da compilação
• Exige a definição do número máximo de elementos na Pilha
• Acesso sequencial: elementos consecutivos na memória
• Pilhas Dinâmicas: utilizam alocação dinâmica
• O espaço de memória é alocado em tempo de execução
• A Pilha cresce conforme novos elementos são adicionados e diminui à medida que elementos são
removidos
• Acesso encadeado: cada elemento pode estar em uma área distinta da memória
• Para acessar um elemento, é preciso percorrer todos os seus antecessores na fila

6
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Pilhas
• Pilha Estática
• Tipo de Pilha onde o sucessor de um elemento ocupa a posição física seguinte do mesmo
• Uso de array

7
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Pilhas
• Pilha Dinâmica
• Tipo de Pilha onde cada elemento aponta para o seu sucessor
• Utiliza-se um ponteiro de ponteiros para apontar para o início da pilha

8
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Pilha Dinâmica


• Estruturas Auxiliares

9
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Pilha Dinâmica


• Criação da Pilha

10
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Pilha Dinâmica


• Tamanho da Pilha

11
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Pilha Dinâmica


• Pilha Vazia

12
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Pilha Dinâmica


• Empilhar

13
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Pilha Dinâmica


• Desempilhar

14
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Pilhas em Java
• O Java possui uma classe que disponibiliza uma pilha. Para isso, basta
•  declarar a “java.util.Stack”.
• Ela armazena objetos, estruturas ou tipos primitivos.

15
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Pilhas em Java
• Diversos métodos para a manipulação da pilha:
• push – Adicionar um elemento na pilha.
• peek – Examinar o elemento do topo da pilha.
• clear – Limpar a pilha.
• pop – Remove um elemento da pilha.

16
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Referências
• Ascencio, A. F. G.; Aráujo, G. S. Estruturas de Dados - Algoritmos, Análise de
Complexidade em Java e C / C++. São Paulo – Pearson Prentice Hall, 2010.
• Backes, A. Notas de Aula. Faculdade de Computação – FACOM, Universidade Federal
de Uberlândia – UFU. Aulas disponíveis em: http://www.facom.ufu.br/~backes/.
• Mathias, S. B. B. R. P. Notas de Aula: Disciplina de Estrutura de Dados, Código J15B,
Universidade Paulista – UNIP, 2020.
• Wainer, J. Notas de Aula. Instituto de Computação, Universidade de Campinas –
UNICAMP. Aulas disponíveis em: https://www.ic.unicamp.br/~wainer/
• Ziviani, N. Projeto de Algoritmos com Implementações em C e Pascal. 4 ed. São Paulo
– Pioneira, 1999.

17

Você também pode gostar