SlideShare uma empresa Scribd logo
1 de 67
Baixar para ler offline
PILHAS (STACKS)
Estrutura de Dados e Algoritmos
com Java
<loiane.training />
PILHAS (STACKS)
Introdução
13
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
http://images.clipartpanda.com/stack-of-books-images-book-stack.gif
http://www.wikihow.com/images/8/8c/Set-up-a-Buffet-Step-6.jpg
31.3 32 33.7 34 33.1
[0] [1] [2] [3] [4] [5] [7][6]
Início
tamanho = 5
Vetor, Array, Lista
31.3
32
33.7
34
33.1
[0]
[1]
[2]
[3]
[4]
[5]
Início -> base da pilha
Pilha
31.3
32
33.7
34
33.1
[0]
[1]
[2]
[3]
[4]
[5]
Início -> base da pilha
Pilha
topo da pilha
31.3
32
33.7
[0]
[1]
[2]
Início -> base da pilha
Pilha
33.7
topo da pilha
empilhar (push)
31.3
32
33.7
[0]
[1]
[2]
Início -> base da pilha
Pilha
33.7
topo da pilha
desempilhar (pop)
LIFO
LIFO
Last In First Out
LIFO
Last In First Out
Último a entrar, primeiro a sair
PILHAS (STACKS): INTRODUÇÃO
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição
➤ Verificar quantidade de elementos na pilha
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição
➤ Verificar quantidade de elementos na pilha
➤ Empilhar elemento
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição
➤ Verificar quantidade de elementos na pilha
➤ Empilhar elemento
➤ Verificar se pilha está vazia
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição
➤ Verificar quantidade de elementos na pilha
➤ Empilhar elemento
➤ Verificar se pilha está vazia
➤ Espiar/Verificar elemento topo da pilha
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição
➤ Verificar quantidade de elementos na pilha
➤ Empilhar elemento
➤ Verificar se pilha está vazia
➤ Espiar/Verificar elemento topo da pilha
➤ Desempilhar elemento da pilha
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição
➤ Verificar quantidade de elementos na pilha
➤ Empilhar elemento
➤ Verificar se pilha está vazia
➤ Espiar/Verificar elemento topo da pilha
➤ Desempilhar elemento da pilha
➤ API Java Stack
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição
➤ Verificar quantidade de elementos na pilha
➤ Empilhar elemento
➤ Verificar se pilha está vazia
➤ Espiar/Verificar elemento topo da pilha
➤ Desempilhar elemento da pilha
➤ API Java Stack
➤ Exercícios
DIAGRAMA CLASSE PILHA
DIAGRAMA CLASSE PILHA
CLASSE PILHA
public class Pilha<T> {
private T[] elementos;
private int tamanho;
public Pilha(int capacidade) {
elementos = (T[]) new Object[capacidade];
tamanho = 0;
}
public int tamanho(){
return this.tamanho;
}
public String toString(){
//mesmo código que a classe Lista/Vetor
}
}
VAMOS REFATORAR?
CLASSE REFATORADA
public class Pilha<T> extends EstruturaEstatica<T>{
public Pilha(int capacidade) {
super(capacidade);
}
public Pilha() {
super();
}
}
TESTE
public class Aula13 {
public static void main(String[] args) {
Pilha<Integer> pilha = new Pilha<Integer>(5);
System.out.println(pilha.tamanho());
System.out.println(pilha);
}
}
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição ✅
➤ Verificar quantidade de elementos na pilha ✅
➤ Empilhar elemento
➤ Verificar se pilha está vazia
➤ Espiar/Verificar elemento topo da pilha
➤ Desempilhar elemento da pilha
➤ API Java Stack
➤ Exercícios
PILHAS (STACKS)
Empilhar elemento
14
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
LIFO
Last In First Out
Último a entrar, primeiro a sair
31.3
32
33.7
[0]
[1]
[2]
Início -> base da pilha
Pilha
33.7
topo da pilha
empilhar (push)
EMPILHAR (ADICIONAR ELEMENTO)
public void empilha(T elemento) {
aumentaCapacidade();
elementos[tamanho] = elemento;
tamanho++;
//elementos[tamanho++] = elemento;
}
EMPILHAR (ADICIONAR ELEMENTO) - REUSANDO CÓDIGO
public void empilha(T elemento) {
super.adiciona(elemento);
}
TESTE
Pilha<Integer> pilha = new Pilha<Integer>(5);
for (int i=1;i<10; i++){
pilha.empilha(i);
}
System.out.println(pilha.tamanho());
System.out.println(pilha);
STACK OVERFLOW EXCEPTION
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição ✅
➤ Verificar quantidade de elementos na pilha ✅
➤ Empilhar elemento ✅
➤ Verificar se pilha está vazia
➤ Espiar/Verificar elemento topo da pilha
➤ Desempilhar elemento da pilha
➤ API Java Stack
➤ Exercícios
PILHAS (STACKS)
Verificar pilha vazia
15
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
VERIFICAR PILHA VAZIA
public boolean estaVazia(){
return tamanho == 0;
}
TESTE
Pilha<Integer> pilha = new Pilha<Integer>(5);
System.out.println(pilha.estaVazia());
for (int i=1;i<10; i++){
pilha.empilha(i);
}
System.out.println(pilha.estaVazia());
System.out.println(pilha.tamanho());
System.out.println(pilha);
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição ✅
➤ Verificar quantidade de elementos na pilha ✅
➤ Empilhar elemento ✅
➤ Verificar se pilha está vazia ✅
➤ Espiar/Verificar elemento topo da pilha
➤ Desempilhar elemento da pilha
➤ API Java Stack
➤ Exercícios
PILHAS (STACKS)
Espiar topo da pilha
16
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
31.3
32
33.7
34
33.1
[0]
[1]
[2]
[3]
[4]
[5]
Início -> base da pilha
Pilha
topo da pilha
tamanho é 5
ESPIAR TOPO DA PILHA (PEEK)
public T topo(){
if (this.estaVazia()){
return null;
}
return elementos[tamanho-1];
}
TESTE
Pilha<Integer> pilha = new Pilha<Integer>(5);
System.out.println(pilha.estaVazia());
for (int i=1;i<10; i++){
pilha.empilha(i);
}
System.out.println(pilha.estaVazia());
System.out.println(pilha.tamanho());
System.out.println(pilha);
System.out.println(pilha.topo());
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição ✅
➤ Verificar quantidade de elementos na pilha ✅
➤ Empilhar elemento ✅
➤ Verificar se pilha está vazia ✅
➤ Espiar/Verificar elemento topo da pilha ✅
➤ Desempilhar elemento da pilha
➤ API Java Stack
➤ Exercícios
PILHAS (STACKS)
Desempilhar elemento
17
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
LIFO
Last In First Out
Último a entrar, primeiro a sair
31.3
32
33.7
[0]
[1]
[2]
Início -> base da pilha
Pilha
33.7
topo da pilha
empilhar (push)
31.3
32
33.7
[0]
[1]
[2]
Início -> base da pilha
Pilha
33.7
topo da pilha
tamanho = 4
[3]
31.3
32
33.7
[0]
[1]
[2]
Início -> base da pilha
Pilha
33.7
desempilhar (pop)
topo da pilha
tamanho = 4
[3]
31.3
32
33.7
[0]
[1]
[2]
Início -> base da pilha
Pilha
33.7
desempilhar (pop)
topo da pilha
tamanho = 3
REMOVER ELEMENTO DA PILHA
public T desempilha(){
if (this.estaVazia()){
return null;
}
return elementos[--tamanho];
}
TESTE
Pilha<Integer> pilha = new Pilha<Integer>();
System.out.println(pilha.estaVazia());
for (int i=1;i<10; i++){
pilha.empilha(i);
}
System.out.println(pilha.estaVazia());
System.out.println(pilha.tamanho());
System.out.println(pilha);
System.out.println(pilha.topo());
int elemento = pilha.desempilha();
System.out.println(elemento);
System.out.println(pilha.tamanho());
System.out.println(pilha);
System.out.println(pilha.topo());
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição ✅
➤ Verificar quantidade de elementos na pilha ✅
➤ Empilhar elemento ✅
➤ Verificar se pilha está vazia ✅
➤ Espiar/Verificar elemento topo da pilha ✅
➤ Desempilhar elemento da pilha ✅
➤ API Java Stack
➤ Exercícios
PILHAS (STACKS)
API Java Stack
18
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
CLASSE STACK - API JAVA
Stack<Integer> pilha = new Stack<Integer>();
System.out.println(pilha.isEmpty());
for (int i=1;i<10; i++){
pilha.push(i);
}
System.out.println(pilha.isEmpty());
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
int elemento = pilha.pop();
System.out.println(elemento);
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
CLASSE STACK - API JAVA
Stack<Integer> pilha = new Stack<Integer>();
System.out.println(pilha.isEmpty());
for (int i=1;i<10; i++){
pilha.push(i);
}
System.out.println(pilha.isEmpty());
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
int elemento = pilha.pop();
System.out.println(elemento);
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
estaVazia
CLASSE STACK - API JAVA
Stack<Integer> pilha = new Stack<Integer>();
System.out.println(pilha.isEmpty());
for (int i=1;i<10; i++){
pilha.push(i);
}
System.out.println(pilha.isEmpty());
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
int elemento = pilha.pop();
System.out.println(elemento);
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
empilha
CLASSE STACK - API JAVA
Stack<Integer> pilha = new Stack<Integer>();
System.out.println(pilha.isEmpty());
for (int i=1;i<10; i++){
pilha.push(i);
}
System.out.println(pilha.isEmpty());
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
int elemento = pilha.pop();
System.out.println(elemento);
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
tamanho
CLASSE STACK - API JAVA
Stack<Integer> pilha = new Stack<Integer>();
System.out.println(pilha.isEmpty());
for (int i=1;i<10; i++){
pilha.push(i);
}
System.out.println(pilha.isEmpty());
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
int elemento = pilha.pop();
System.out.println(elemento);
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
topo
CLASSE STACK - API JAVA
Stack<Integer> pilha = new Stack<Integer>();
System.out.println(pilha.isEmpty());
for (int i=1;i<10; i++){
pilha.push(i);
}
System.out.println(pilha.isEmpty());
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
int elemento = pilha.pop();
System.out.println(elemento);
System.out.println(pilha.size());
System.out.println(pilha);
System.out.println(pilha.peek());
desempilha
PILHAS (STACKS): INTRODUÇÃO
➤ Classe Pilha
➤ Definição ✅
➤ Verificar quantidade de elementos na pilha ✅
➤ Empilhar elemento ✅
➤ Verificar se pilha está vazia ✅
➤ Espiar/Verificar elemento topo da pilha ✅
➤ Desempilhar elemento da pilha ✅
➤ API Java Stack ✅
➤ Exercícios
EXERCÍCIOS
http://goo.gl/Ad5lAe
Download código fonte e certificado
Cadastro em:
http://loiane.training
http://loiane.com
facebook.com/loianegroner
twitter.com/loiane
https://github.com/loiane
youtube.com/loianegroner
http://loiane.training

Mais conteúdo relacionado

Mais procurados

Mais procurados (19)

Python 01
Python 01Python 01
Python 01
 
Python 04
Python 04Python 04
Python 04
 
Python 03
Python 03Python 03
Python 03
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
 
Aula 16
Aula 16Aula 16
Aula 16
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Aula 15
Aula 15Aula 15
Aula 15
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
 
Aula05
Aula05Aula05
Aula05
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESS
 
Capítulo 6
Capítulo 6Capítulo 6
Capítulo 6
 
Aula 21
Aula 21Aula 21
Aula 21
 
Python 05
Python 05Python 05
Python 05
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Pged 05
Pged 05Pged 05
Pged 05
 
Pged 04
Pged 04Pged 04
Pged 04
 

Semelhante a Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)

Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Loiane Groner
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHASAparicio Junior
 
Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopJean Martina
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma JavaJoão Lourenço
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.pptJoberthSilva
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Alamo Saravali
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 

Semelhante a Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack) (20)

Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Aula 8
Aula 8Aula 8
Aula 8
 
Pilhas java
Pilhas javaPilhas java
Pilhas java
 
Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oop
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma Java
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.ppt
 
Maonamassa Pga
Maonamassa PgaMaonamassa Pga
Maonamassa Pga
 
Coleções do c
Coleções do cColeções do c
Coleções do c
 
Coleções do c
Coleções do cColeções do c
Coleções do c
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1
 
Nossa experiência com TDD
Nossa experiência com TDDNossa experiência com TDD
Nossa experiência com TDD
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 

Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)