SlideShare uma empresa Scribd logo
1 de 29
Estrutura de
Dados
Profa. Divani Barbosa Gavinier
Profa. Divani Barbosa Gavinier
Aula 6 – parte 2
PILHAS
Uma pilha (stack) é uma estrutura de dados em
que todas as operações de remoção e inserção
são realizadas pela mesma extremidade,
denominada como topo.
Sempre que houver uma
remoção, o elemento
removido é o que está na
estrutura há menos tempo
Essa política é conhecida pela sigla LIFO de
“Last In First Out” (ultimo a entrar primeiro a
sair).
Exemplos
Somente o elemento do topo é acessível
↓
São poucas as operações que podem ser
realizadas sobre uma pilha
Classe
int topo;
int tam_max;
double[] itens;
push: Insere itens na pilha (empilha)
pop: Retira itens da pilha (desempilha)
top: Retorna um item da pilha sem desempilhar
empty: Verifica se a pilha esta vazia
full: Verifica se a pilha esta cheia
size: Retorna o tamanho da pilha
Métodos
Campos Construtor
public Pilha(int n) {
itens = new double[n];
tam_max = n;
topo = 0;
}
Colocar uma informação na
pilha
push
Empilha
PUSH
Algoritmo 1
Entrada: Valor do item a ser adicionado na pilha (valor)
Saída: Não tem retorno
inicio
itens[ topo ]  valor
topo  topo + 1
fim
1
2
3
4
Em Java
public void push(double valor) {
itens[ topo ] = valor;
topo++;
}
Retirar uma informação na
pilha
pop
Desempilha
POP
Algoritmo 2
Entrada: não há
Saída: não há
inicio
topo  topo – 1
fim
1
2
3
Em Java
public void pop() {
topo--;
}
Exemplos função push e pop
Adicionar push de Push-down
Remover pop de Pop-up
Exemplos função
push e pop
Retornar o elemento superior
(topo) da pilha, sem remove-lo
TOP
Algoritmo 3
Entrada: não há
Saída: item do topo
inicio
retorne itens[ topo-1 ]
fim
1
2
3
Em Java
public double top() {
return itens[ topo-1 ];
}
Retornar o tamanho da pilha
SIZE
Algoritmo 4
Entrada: não há
Saída: tamanho da pilha (int)
inicio
retorne topo ;
fim
1
2
3
Em Java
public int size() {
return topo;
}
Verificar se a pilha esta vazia
EMPTY
Algoritmo 5
Entrada: não há
Saída: verdadeiro ou falso
inicio
retorne ( topo = 0 );
fim
1
2
3
Em Java
public boolean empty() {
return ( topo == 0 );
}
Verificar se a pilha esta cheia
FULL
Algoritmo 6
Entrada: não há
Saída: verdadeiro ou falso
inicio
retorne ( topo = tam_max );
fim
1
2
3
Em Java
public boolean full() {
return ( topo == tam_max );
}
Aplicação
As pilhas são úteis quando queremos armazenar
temporariamente uma informação que vamos usar logo
depois.
Se tivermos uma pilha p e um elemento x qualquer, a
operação push (x) acrescenta o elemento x no topo da pilha e
aumenta-lhe o tamanho.
A operação pop() remove o elemento que está no topo da
pilha fazendo com que esta diminua.
Já a operação top não altera o tamanho da estrutura, pois
simplesmente visita o topo da pilha retornado uma cópia do
elemento que encontra-se no seu topo.
Editores de texto utilizam estrutura de dados na forma de pilha
operações
Cancela operações recentes e reverte ao estado anterior.
Esse mecanismo é implementado mantendo as alterações do texto em uma
pilha
Aplicação - Exemplos
Navegadores utilizam estrutura de dados na forma de pilha
Para armazenar os endereços mais recentemente visitados.
Cada vez que o navegador visita um novo site, o endereço é armazenado na
pilha de endereços. Usando a operação de retorno (“pop”) o navegador
permite que o usuário retorne ao ultimo site visitado, retirando seu endereço
da pilha.
Aplicação - Exemplos
Jogo paciência utiliza estrutura de dados na forma de pilha
Para empilhar e desempilhar cartas.
Aplicação - Exemplos
Implementação Pilha
class Pilha {
private double[] itens;
private int topo;
private int tam_max;
public Pilha(int n) { // construtor
itens = new double[n];
tam_max = n;
topo = 0;
}
public void push(double valor) { // inserção itens
itens[ topo ] = valor;
topo++;
}
public void pop() { // remoção itens
topo--;
}
public double top() { // retorna item do topo
return itens[ topo-1 ];
}
// Continua ...
public boolean empty() { // verifica se vazia
return ( topo == 0 );
}
public boolean full() { // verifica se cheia
return ( topo == tam_max );
}
public int size() { // retorna tamanho
return topo;
}
} // fim classe Pilha
/////////////////////////////////////////////////////////////
class PilhaApp { // Classe principal
public static void main(String[] args) { //Progr. principal
Pilha p = new Pilha(4); // Criando objeto na memoria
// O usuário deve verificar se a pilha esta cheia antes
// de adicionar
if (!p.full()) p.push(20.5);
else System.out.println("ATENCAO PILHA CHEIA");
// Continua ...
if (!p.full()) p.push(40.4);
else System.out.println("ATENCAO PILHA CHEIA");
if (!p.full()) p.push(60.8);
else System.out.println("ATENCAO PILHA CHEIA");
if (!p.full()) p.push(80.5);
else System.out.println("ATENCAO PILHA CHEIA");
if (!p.full()) p.push(10);
else System.out.println("ATENCAO PILHA CHEIA");
while (!p.empty()) { // Ate esvaziar (se não vazio)
System.out.print(" " + p.top()); // Mostre na tela o
// valor do topo
p.pop(); // Desempilhe um item
}
System.out.println("n"); // Pula uma linha
} // fim programa principal
} // fim classe principal PilhaApp
Atividade 1
 Dado o seguinte trecho de código
abaixo, responda o que esta sendo
impresso na tela.
.public static void main(String[] args) {
int n=0, k=15, x=3;
Pilha p = new Pilha(k+2);
for (n=0; n<x; n++)
p.push(n+1);
System.out.println(p.size());
System.out.println(p.top()); p.pop();
System.out.println(p.top()); p.pop();
p.push(x+1);
System.out.println(p.top()); p.pop();
System.out.println(p.top());
Resposta:
3
3
2
4
1
Dica: Classe para Pilha de Strings
private int topo;
private int tam;
private String[] itens;
push: Insere itens na pilha (empilha)
pop: Retira itens da pilha (desempilha)
top: Retorna um item da pilha sem desempilhar
empty: Verifica se a pilha esta vazia
full: Verifica se a pilha esta cheia
size: Retorna o tamanho da pilha
Métodos
Campos Construtor
public Pilha(int n) {
itens = new String[n];
tam = n;
topo = 0;
}
Atividade 2
Implemente uma pilha de Strings
Classe Agenda
class Agenda {
public String nome;
public long tel;
public Agenda(String nm, long t) {
nome = nm;
tel = t;
}
}
Atividade 3
Implemente uma pilha de Registros Agenda
Dica: Classe para Pilha de Registro
Campos Construtor
public Pilha(int n) {
itens = new Agenda[n];
tam_max = n;
topo = 0;
}
Método push
public void push(String nm, long t) {
itens[ topo ] = new Agenda(nm, t);
topo++;
}
private int topo;
private int tam;
private Agenda[] itens;
Método top
public String top() {
return itens[ topo-1 ].nome+" "+itens[ topo-1 ].tel;
}
Atividade 4
Escreva um programa que use uma pilha
para inverter a ordem das letras de
uma palavra.
Exemplo de Entrada Exemplo de Saída
FATEC TAUBATE ETABUAT CETAF
DICA:
1. Use a estrutura de dados pilha de caracteres;
2. Ler a entrada na forma de String e usar os métodos
length e charAt.
Exemplo:
String s = lerStr();
s.length(); /* length() retorna o tamanho da string s */
s.charAt(i); /* charAt(i) retorna o caractere da posição
i da string s */
Atividade 5
 Implemente no método de inserção de
itens da pilha a verificação se o usuário
atingiu o tamanho máximo disponível para
o vetor pilha.
 Caso positivo duplique o tamanho do
vetor de itens.
Dica: Crie um novo vetor com o dobro do
tamanho do atual e copie os itens do atual
para o novo. Depois copie o vetor novo para
atual.
Atividades 6, 7, 8 e 9
► Faça o seguinte menu iterativo com o usuário para chamada
dos métodos vistos hoje em aula:
► Dada uma pilha qualquer contendo os valores 3, 9, 5, 1 (3 é
o topo) descreva qual o resultado após as seguintes
operações: Push (2), Pop, Pop, Top, Pop, Push (7), Pop, Pop,
Push (4), Pop, Pop, Push (8), Push (6), Pop.
► Construa um método que troca de lugar o elemento que está
no topo da pilha com o que está na base da pilha.
► Construa um programa que leia 10 valores do tipo int e
empilha-os conforme forem pares ou impares na pilha1 e
pilha2, respectivamente. No final desempilhe os valores de
cada pilha mostrando-os na tela.
Implemente no menu:
Caso 1: Inserir itens: Verificação antes da chamada
da função se o tamanho da pilha é menor que o
tamanho máximo ajustado ao vetor.
Caso 2 e 4: Remover e Imprimir item: Verificação
antes da chamada da função se a pilha esta vazia.

Mais conteúdo relacionado

Mais procurados

An Introduction to Unit Testing
An Introduction to Unit TestingAn Introduction to Unit Testing
An Introduction to Unit TestingJoe Tremblay
 
Understanding java streams
Understanding java streamsUnderstanding java streams
Understanding java streamsShahjahan Samoon
 
Estratégia de Produção
Estratégia de ProduçãoEstratégia de Produção
Estratégia de ProduçãoAndre Silva
 
Exercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoExercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoBruno Quaresma
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasLeinylson Fontinele
 
API Asynchrones en Java 8
API Asynchrones en Java 8API Asynchrones en Java 8
API Asynchrones en Java 8José Paumard
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosMauro Pereira
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoJonas Mendonça
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Elias Nogueira
 

Mais procurados (20)

An Introduction to Unit Testing
An Introduction to Unit TestingAn Introduction to Unit Testing
An Introduction to Unit Testing
 
Understanding java streams
Understanding java streamsUnderstanding java streams
Understanding java streams
 
Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674
 
Ch2 Liang
Ch2 LiangCh2 Liang
Ch2 Liang
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
Junit
JunitJunit
Junit
 
Estratégia de Produção
Estratégia de ProduçãoEstratégia de Produção
Estratégia de Produção
 
Algoritmos de busca
Algoritmos de buscaAlgoritmos de busca
Algoritmos de busca
 
Exercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoExercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de Programação
 
Python Basics.pdf
Python Basics.pdfPython Basics.pdf
Python Basics.pdf
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas Estáticas
 
API Asynchrones en Java 8
API Asynchrones en Java 8API Asynchrones en Java 8
API Asynchrones en Java 8
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Aula 02 rev_27_02_13_tai
Aula 02 rev_27_02_13_taiAula 02 rev_27_02_13_tai
Aula 02 rev_27_02_13_tai
 
Data struture lab
Data struture labData struture lab
Data struture lab
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
 

Semelhante a Aula 8 (20)

Pilhas java
Pilhas javaPilhas java
Pilhas java
 
Pilha
PilhaPilha
Pilha
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Pilha ad
Pilha adPilha ad
Pilha ad
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Aula 9
Aula 9Aula 9
Aula 9
 
11 tipos abstratos de dados
11   tipos abstratos de dados11   tipos abstratos de dados
11 tipos abstratos de dados
 
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
 
Aula 10
Aula 10 Aula 10
Aula 10
 
Pilhas encadeadas
Pilhas encadeadasPilhas encadeadas
Pilhas encadeadas
 
Estruturas
EstruturasEstruturas
Estruturas
 
Aula14
Aula14Aula14
Aula14
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Java - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsJava - Introdução a Coleções e Generics
Java - Introdução a Coleções e Generics
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetos
 
Slides pilhas e_filas
Slides  pilhas e_filasSlides  pilhas e_filas
Slides pilhas e_filas
 
Programação-Aula004
Programação-Aula004Programação-Aula004
Programação-Aula004
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 

Mais de Divani Barbosa (19)

Banco de Dados MySQL + NetBeans Java + Interface Grafica
Banco de Dados MySQL + NetBeans Java + Interface GraficaBanco de Dados MySQL + NetBeans Java + Interface Grafica
Banco de Dados MySQL + NetBeans Java + Interface Grafica
 
Aula 22
Aula 22Aula 22
Aula 22
 
Aula 21
Aula 21Aula 21
Aula 21
 
Aula 20
Aula 20Aula 20
Aula 20
 
Aula 19
Aula 19Aula 19
Aula 19
 
Aula 18
Aula 18Aula 18
Aula 18
 
Aula 17
Aula 17Aula 17
Aula 17
 
Aula 16
Aula 16Aula 16
Aula 16
 
Aula 15
Aula 15Aula 15
Aula 15
 
Aula 13
Aula 13Aula 13
Aula 13
 
Aula 12
Aula 12Aula 12
Aula 12
 
Aula 11
Aula 11Aula 11
Aula 11
 
Aula 7
Aula 7 Aula 7
Aula 7
 
Aula 6
Aula 6Aula 6
Aula 6
 
Aula 5
Aula 5 Aula 5
Aula 5
 
Aula 4
Aula 4 Aula 4
Aula 4
 
Aula 3
Aula 3Aula 3
Aula 3
 
Aula 2
Aula 2Aula 2
Aula 2
 
Aula 1
Aula 1Aula 1
Aula 1
 

Aula 8

  • 1. Estrutura de Dados Profa. Divani Barbosa Gavinier Profa. Divani Barbosa Gavinier Aula 6 – parte 2
  • 2. PILHAS Uma pilha (stack) é uma estrutura de dados em que todas as operações de remoção e inserção são realizadas pela mesma extremidade, denominada como topo. Sempre que houver uma remoção, o elemento removido é o que está na estrutura há menos tempo Essa política é conhecida pela sigla LIFO de “Last In First Out” (ultimo a entrar primeiro a sair).
  • 3. Exemplos Somente o elemento do topo é acessível ↓ São poucas as operações que podem ser realizadas sobre uma pilha
  • 4. Classe int topo; int tam_max; double[] itens; push: Insere itens na pilha (empilha) pop: Retira itens da pilha (desempilha) top: Retorna um item da pilha sem desempilhar empty: Verifica se a pilha esta vazia full: Verifica se a pilha esta cheia size: Retorna o tamanho da pilha Métodos Campos Construtor public Pilha(int n) { itens = new double[n]; tam_max = n; topo = 0; }
  • 5. Colocar uma informação na pilha push Empilha
  • 6. PUSH Algoritmo 1 Entrada: Valor do item a ser adicionado na pilha (valor) Saída: Não tem retorno inicio itens[ topo ]  valor topo  topo + 1 fim 1 2 3 4 Em Java public void push(double valor) { itens[ topo ] = valor; topo++; }
  • 7. Retirar uma informação na pilha pop Desempilha
  • 8. POP Algoritmo 2 Entrada: não há Saída: não há inicio topo  topo – 1 fim 1 2 3 Em Java public void pop() { topo--; }
  • 10. Adicionar push de Push-down Remover pop de Pop-up Exemplos função push e pop
  • 11. Retornar o elemento superior (topo) da pilha, sem remove-lo TOP Algoritmo 3 Entrada: não há Saída: item do topo inicio retorne itens[ topo-1 ] fim 1 2 3 Em Java public double top() { return itens[ topo-1 ]; }
  • 12. Retornar o tamanho da pilha SIZE Algoritmo 4 Entrada: não há Saída: tamanho da pilha (int) inicio retorne topo ; fim 1 2 3 Em Java public int size() { return topo; }
  • 13. Verificar se a pilha esta vazia EMPTY Algoritmo 5 Entrada: não há Saída: verdadeiro ou falso inicio retorne ( topo = 0 ); fim 1 2 3 Em Java public boolean empty() { return ( topo == 0 ); }
  • 14. Verificar se a pilha esta cheia FULL Algoritmo 6 Entrada: não há Saída: verdadeiro ou falso inicio retorne ( topo = tam_max ); fim 1 2 3 Em Java public boolean full() { return ( topo == tam_max ); }
  • 15. Aplicação As pilhas são úteis quando queremos armazenar temporariamente uma informação que vamos usar logo depois. Se tivermos uma pilha p e um elemento x qualquer, a operação push (x) acrescenta o elemento x no topo da pilha e aumenta-lhe o tamanho. A operação pop() remove o elemento que está no topo da pilha fazendo com que esta diminua. Já a operação top não altera o tamanho da estrutura, pois simplesmente visita o topo da pilha retornado uma cópia do elemento que encontra-se no seu topo.
  • 16. Editores de texto utilizam estrutura de dados na forma de pilha operações Cancela operações recentes e reverte ao estado anterior. Esse mecanismo é implementado mantendo as alterações do texto em uma pilha Aplicação - Exemplos
  • 17. Navegadores utilizam estrutura de dados na forma de pilha Para armazenar os endereços mais recentemente visitados. Cada vez que o navegador visita um novo site, o endereço é armazenado na pilha de endereços. Usando a operação de retorno (“pop”) o navegador permite que o usuário retorne ao ultimo site visitado, retirando seu endereço da pilha. Aplicação - Exemplos
  • 18. Jogo paciência utiliza estrutura de dados na forma de pilha Para empilhar e desempilhar cartas. Aplicação - Exemplos
  • 20. class Pilha { private double[] itens; private int topo; private int tam_max; public Pilha(int n) { // construtor itens = new double[n]; tam_max = n; topo = 0; } public void push(double valor) { // inserção itens itens[ topo ] = valor; topo++; } public void pop() { // remoção itens topo--; } public double top() { // retorna item do topo return itens[ topo-1 ]; } // Continua ...
  • 21. public boolean empty() { // verifica se vazia return ( topo == 0 ); } public boolean full() { // verifica se cheia return ( topo == tam_max ); } public int size() { // retorna tamanho return topo; } } // fim classe Pilha ///////////////////////////////////////////////////////////// class PilhaApp { // Classe principal public static void main(String[] args) { //Progr. principal Pilha p = new Pilha(4); // Criando objeto na memoria // O usuário deve verificar se a pilha esta cheia antes // de adicionar if (!p.full()) p.push(20.5); else System.out.println("ATENCAO PILHA CHEIA"); // Continua ...
  • 22. if (!p.full()) p.push(40.4); else System.out.println("ATENCAO PILHA CHEIA"); if (!p.full()) p.push(60.8); else System.out.println("ATENCAO PILHA CHEIA"); if (!p.full()) p.push(80.5); else System.out.println("ATENCAO PILHA CHEIA"); if (!p.full()) p.push(10); else System.out.println("ATENCAO PILHA CHEIA"); while (!p.empty()) { // Ate esvaziar (se não vazio) System.out.print(" " + p.top()); // Mostre na tela o // valor do topo p.pop(); // Desempilhe um item } System.out.println("n"); // Pula uma linha } // fim programa principal } // fim classe principal PilhaApp
  • 23. Atividade 1  Dado o seguinte trecho de código abaixo, responda o que esta sendo impresso na tela. .public static void main(String[] args) { int n=0, k=15, x=3; Pilha p = new Pilha(k+2); for (n=0; n<x; n++) p.push(n+1); System.out.println(p.size()); System.out.println(p.top()); p.pop(); System.out.println(p.top()); p.pop(); p.push(x+1); System.out.println(p.top()); p.pop(); System.out.println(p.top()); Resposta: 3 3 2 4 1
  • 24. Dica: Classe para Pilha de Strings private int topo; private int tam; private String[] itens; push: Insere itens na pilha (empilha) pop: Retira itens da pilha (desempilha) top: Retorna um item da pilha sem desempilhar empty: Verifica se a pilha esta vazia full: Verifica se a pilha esta cheia size: Retorna o tamanho da pilha Métodos Campos Construtor public Pilha(int n) { itens = new String[n]; tam = n; topo = 0; } Atividade 2 Implemente uma pilha de Strings
  • 25. Classe Agenda class Agenda { public String nome; public long tel; public Agenda(String nm, long t) { nome = nm; tel = t; } } Atividade 3 Implemente uma pilha de Registros Agenda
  • 26. Dica: Classe para Pilha de Registro Campos Construtor public Pilha(int n) { itens = new Agenda[n]; tam_max = n; topo = 0; } Método push public void push(String nm, long t) { itens[ topo ] = new Agenda(nm, t); topo++; } private int topo; private int tam; private Agenda[] itens; Método top public String top() { return itens[ topo-1 ].nome+" "+itens[ topo-1 ].tel; }
  • 27. Atividade 4 Escreva um programa que use uma pilha para inverter a ordem das letras de uma palavra. Exemplo de Entrada Exemplo de Saída FATEC TAUBATE ETABUAT CETAF DICA: 1. Use a estrutura de dados pilha de caracteres; 2. Ler a entrada na forma de String e usar os métodos length e charAt. Exemplo: String s = lerStr(); s.length(); /* length() retorna o tamanho da string s */ s.charAt(i); /* charAt(i) retorna o caractere da posição i da string s */
  • 28. Atividade 5  Implemente no método de inserção de itens da pilha a verificação se o usuário atingiu o tamanho máximo disponível para o vetor pilha.  Caso positivo duplique o tamanho do vetor de itens. Dica: Crie um novo vetor com o dobro do tamanho do atual e copie os itens do atual para o novo. Depois copie o vetor novo para atual.
  • 29. Atividades 6, 7, 8 e 9 ► Faça o seguinte menu iterativo com o usuário para chamada dos métodos vistos hoje em aula: ► Dada uma pilha qualquer contendo os valores 3, 9, 5, 1 (3 é o topo) descreva qual o resultado após as seguintes operações: Push (2), Pop, Pop, Top, Pop, Push (7), Pop, Pop, Push (4), Pop, Pop, Push (8), Push (6), Pop. ► Construa um método que troca de lugar o elemento que está no topo da pilha com o que está na base da pilha. ► Construa um programa que leia 10 valores do tipo int e empilha-os conforme forem pares ou impares na pilha1 e pilha2, respectivamente. No final desempilhe os valores de cada pilha mostrando-os na tela. Implemente no menu: Caso 1: Inserir itens: Verificação antes da chamada da função se o tamanho da pilha é menor que o tamanho máximo ajustado ao vetor. Caso 2 e 4: Remover e Imprimir item: Verificação antes da chamada da função se a pilha esta vazia.