Escolar Documentos
Profissional Documentos
Cultura Documentos
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
9
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
10
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
11
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
12
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
13
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
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