SlideShare une entreprise Scribd logo
1  sur  26
Prof. Adriano Teixeira de Souza
   É uma das estruturas de dados mais simples

   A idéia fundamental da pilha é que todo o acesso a
    seus elementos é feito através do seu topo.

   Assim, quando um elemento novo é introduzido na
    pilha, passa a ser o elemento do topo, e o único
    elemento que pode ser removido da pilha é o do
    topo.
   Verificação de parênteses.


   Retirada de vagões de um trem.


   Retirada de mercadorias em um caminhão de
    entregas.
   Os elementos da pilha são retirados na ordem
    inversa à ordem em que foram introduzidos:
    o primeiro que sai é o último que entrou
    (LIFO – last in, first out).
   Existem duas operações básicas que devem
    ser implementadas numa estrutura de pilha:
    ◦ operação para empilhar (push) um novo elemento,
      inserindo-o no topo,
    ◦ operação para desempilhar (pop) um elemento,
      removendo-o do topo
push(b)
push(a)


  b

  a




          topo
                 x

                 m

                 k
topo
                                     b
               topo
                      a              a
topo
       x              x              x

       m              m              m

       k   push(a)    k   push(b)    k
pop(b)
pop(a)




         topo
                b

                a

                x

                m

                k
topo
       b

       a       topo
                      a
                              topo
       x              x              x

       m              m              m

       k   pop(b)     k   pop(a)     k
   Supondo a pilha está armazenada em um
    vetor pilha[0..n-1].
   A parte do vetor ocupada pela pilha será:




      0                      t           n-1


                  pilha[0..n-1]
public class Pilha {

 static final int MAX = 50;

 int n;//Elementos adicionados
 float vet[] = new float[MAX];

} Pilha;
Pilha cria()
{
   Pilha p;
   p = new Pilha();
   p.n = 0;/*Inicializa com zero elementos*/
   return p;
}




                      Prof. Adriano Teixeira de Souza
void push(Pilha p, float v)
{
  if(p.n == Pilha.MAX){
    System.out.println("Capacidade da pilha
                        estourou.");
    System.exit(1); /*aborta programa*/
  }
  /* insere elemento na próxima posição livre */
  p.vet[p.n] = v;
  p.n++;
}
float pop(Pilha p)
{
  float v;
  if (vazia(p)) {
    System.out.println("Pilha vazia.");
    System.exit(1); /*aborta programa*/
  }
  /*retira elemento do topo*/
  v = p.vet[p.n-1];
  p.n--;
  return v;
}
boolean vazia(Pilha p)
{
  return (p.n == 0);
}
void imprime (Pilha p) {

    int i;

    for (i=p.n-1; i>=0; i--)
      System.out.println(p.vet[i]);

}




                     Prof. Adriano Teixeira de Souza
public static void main(String[] args) {
  ManipuladorPilha maninula = new ManipuladorPilha();

    Pilha p = maninula.cria();
    maninula.push(p,20.0f);
    maninula.push(p,20.8f);
    maninula.push(p,20.3f);
    maninula.push(p,44.5f);
    maninula.push(p,33.3f);
    maninula.push(p,20.9f);
    maninula.imprime (p);
    System.out.println("Retirado: "+ maninula.pop(p));
    System.out.println("Retirado: "+maninula.pop(p));
    System.out.println("Configuracao da fila:");
                       maninula.imprime (p);
    p = null;
}

                            Prof. Adriano Teixeira de Souza
   Quando o número máximo de elementos que
    serão armazenados na pilha não é conhecido,
    devemos implementar a pilha usando uma
    estrutura de dados dinâmica, no caso,
    empregando uma lista encadeada.
   Os elementos são armazenados na lista e a
    pilha pode ser representada simplesmente por
    um ponteiro para o primeiro nó da lista.
public class No {

    float info;
    No   anterior;
}

public class Pilha {
  No topo;
}
   Criar uma estrutura de pilha;
   Inserir um elemento no topo (push);
   Remover o elemento do topo (pop);
   Verificar se a pilha está vazia;
   Liberar a estrutura de pilha
Pilha cria()
{
  Pilha p = new Pilha();
  p.topo = null;
  return p;
}
void push(Pilha p, float v)
{
  No aux = new No();
  aux.info = v;
  aux.anterior = p.topo;
  p.topo = aux;
}
float pop(Pilha p)
{
  float v;
  if (vazia(p))
  {
    System.out.println("Pilha vazia.");
    System.exit(1); /*aborta o programa*/
  }
  v    = p.topo.info;
  No aux = p.topo;
  p.topo = aux.anterior;
  return v;
}
boolean vazia(Pilha p)
{
  return (p.topo == null);
}
void imprime (Pilha p) {

    for (No q=p.topo; q!=null; q=q.anterior)
      System.out.println(q.info);

}




                      Prof. Adriano Teixeira de Souza
public static void main(String[] args) {
  ManipulaPilha manipula = new ManipulaPilha();
  Pilha p = manipula.cria();
  manipula.push(p,20.0f);
  manipula.push(p,20.8f);
  manipula.push(p,20.3f);
  manipula.push(p,44.5f);
  manipula.push(p,33.3f);
  manipula.push(p,20.9f);
  manipula.imprime (p);
  System.out.println("Retirado: "+ manipula.pop(p));
  System.out.println("Retirado: "+ manipula.pop(p));
  System.out.println("Configuracao da fila:n");
  manipula.imprime (p);
  p = null;
}



                         Prof. Adriano Teixeira de Souza
   Utilizando o algoritmo anteriormente
    apresentado implemente um programa que
    insira dados em uma pilha A e em seguida
    remova-os elementos da pilha A e insira-os
    na pilha B com sua ordem invertida.




                        Prof. Adriano Teixeira de Souza

Contenu connexe

Tendances

Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaLoiane Groner
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com Java
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com JavaExercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com Java
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com JavaLoiane Groner
 
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaLoiane Groner
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoRegis Magalhães
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasLeinylson Fontinele
 
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
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Leinylson Fontinele
 

Tendances (20)

Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Funções em C
Funções em CFunções em C
Funções em C
 
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com Java
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com JavaExercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com Java
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com Java
 
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Classes e Estrutura de Dados
Classes e Estrutura de DadosClasses e Estrutura de Dados
Classes e Estrutura de Dados
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 Algoritmo
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas Estáticas
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
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
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Aula 17
Aula 17Aula 17
Aula 17
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 

En vedette

Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHASAparicio Junior
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Natanael Fonseca
 
Java orientação a objetos (introdução)
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)Armando Daniel
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2Leandro Lopes
 

En vedette (19)

Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
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 em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Estruturas de dados
Estruturas de dadosEstruturas de dados
Estruturas de dados
 
JAVA - Matrizes
JAVA - MatrizesJAVA - Matrizes
JAVA - Matrizes
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Java orientação a objetos (introdução)
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 

Similaire à Implementação de pilhas com Java

Similaire à Implementação de pilhas com Java (10)

Aula 8
Aula 8Aula 8
Aula 8
 
Pilhas encadeadas
Pilhas encadeadasPilhas encadeadas
Pilhas encadeadas
 
Aula 10
Aula 10 Aula 10
Aula 10
 
Programação-Aula004
Programação-Aula004Programação-Aula004
Programação-Aula004
 
Aula 15
Aula 15Aula 15
Aula 15
 
Aula 12
Aula 12Aula 12
Aula 12
 
Aula 9
Aula 9Aula 9
Aula 9
 
Pilhas java
Pilhas javaPilhas java
Pilhas java
 
aula de cálculo pdf atualizado 2023 funções
aula de cálculo pdf atualizado 2023 funçõesaula de cálculo pdf atualizado 2023 funções
aula de cálculo pdf atualizado 2023 funções
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basico
 

Plus de Adriano Teixeira de Souza

Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosParadigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CAdriano Teixeira de Souza
 

Plus de Adriano Teixeira de Souza (17)

Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosParadigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 

Implementação de pilhas com Java

  • 2. É uma das estruturas de dados mais simples  A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo.  Assim, quando um elemento novo é introduzido na pilha, passa a ser o elemento do topo, e o único elemento que pode ser removido da pilha é o do topo.
  • 3. Verificação de parênteses.  Retirada de vagões de um trem.  Retirada de mercadorias em um caminhão de entregas.
  • 4. Os elementos da pilha são retirados na ordem inversa à ordem em que foram introduzidos: o primeiro que sai é o último que entrou (LIFO – last in, first out).  Existem duas operações básicas que devem ser implementadas numa estrutura de pilha: ◦ operação para empilhar (push) um novo elemento, inserindo-o no topo, ◦ operação para desempilhar (pop) um elemento, removendo-o do topo
  • 5. push(b) push(a) b a topo x m k
  • 6. topo b topo a a topo x x x m m m k push(a) k push(b) k
  • 7. pop(b) pop(a) topo b a x m k
  • 8. topo b a topo a topo x x x m m m k pop(b) k pop(a) k
  • 9. Supondo a pilha está armazenada em um vetor pilha[0..n-1].  A parte do vetor ocupada pela pilha será: 0 t n-1 pilha[0..n-1]
  • 10. public class Pilha { static final int MAX = 50; int n;//Elementos adicionados float vet[] = new float[MAX]; } Pilha;
  • 11. Pilha cria() { Pilha p; p = new Pilha(); p.n = 0;/*Inicializa com zero elementos*/ return p; } Prof. Adriano Teixeira de Souza
  • 12. void push(Pilha p, float v) { if(p.n == Pilha.MAX){ System.out.println("Capacidade da pilha estourou."); System.exit(1); /*aborta programa*/ } /* insere elemento na próxima posição livre */ p.vet[p.n] = v; p.n++; }
  • 13. float pop(Pilha p) { float v; if (vazia(p)) { System.out.println("Pilha vazia."); System.exit(1); /*aborta programa*/ } /*retira elemento do topo*/ v = p.vet[p.n-1]; p.n--; return v; }
  • 14. boolean vazia(Pilha p) { return (p.n == 0); }
  • 15. void imprime (Pilha p) { int i; for (i=p.n-1; i>=0; i--) System.out.println(p.vet[i]); } Prof. Adriano Teixeira de Souza
  • 16. public static void main(String[] args) { ManipuladorPilha maninula = new ManipuladorPilha(); Pilha p = maninula.cria(); maninula.push(p,20.0f); maninula.push(p,20.8f); maninula.push(p,20.3f); maninula.push(p,44.5f); maninula.push(p,33.3f); maninula.push(p,20.9f); maninula.imprime (p); System.out.println("Retirado: "+ maninula.pop(p)); System.out.println("Retirado: "+maninula.pop(p)); System.out.println("Configuracao da fila:"); maninula.imprime (p); p = null; } Prof. Adriano Teixeira de Souza
  • 17. Quando o número máximo de elementos que serão armazenados na pilha não é conhecido, devemos implementar a pilha usando uma estrutura de dados dinâmica, no caso, empregando uma lista encadeada.  Os elementos são armazenados na lista e a pilha pode ser representada simplesmente por um ponteiro para o primeiro nó da lista.
  • 18. public class No { float info; No anterior; } public class Pilha { No topo; }
  • 19. Criar uma estrutura de pilha;  Inserir um elemento no topo (push);  Remover o elemento do topo (pop);  Verificar se a pilha está vazia;  Liberar a estrutura de pilha
  • 20. Pilha cria() { Pilha p = new Pilha(); p.topo = null; return p; }
  • 21. void push(Pilha p, float v) { No aux = new No(); aux.info = v; aux.anterior = p.topo; p.topo = aux; }
  • 22. float pop(Pilha p) { float v; if (vazia(p)) { System.out.println("Pilha vazia."); System.exit(1); /*aborta o programa*/ } v = p.topo.info; No aux = p.topo; p.topo = aux.anterior; return v; }
  • 23. boolean vazia(Pilha p) { return (p.topo == null); }
  • 24. void imprime (Pilha p) { for (No q=p.topo; q!=null; q=q.anterior) System.out.println(q.info); } Prof. Adriano Teixeira de Souza
  • 25. public static void main(String[] args) { ManipulaPilha manipula = new ManipulaPilha(); Pilha p = manipula.cria(); manipula.push(p,20.0f); manipula.push(p,20.8f); manipula.push(p,20.3f); manipula.push(p,44.5f); manipula.push(p,33.3f); manipula.push(p,20.9f); manipula.imprime (p); System.out.println("Retirado: "+ manipula.pop(p)); System.out.println("Retirado: "+ manipula.pop(p)); System.out.println("Configuracao da fila:n"); manipula.imprime (p); p = null; } Prof. Adriano Teixeira de Souza
  • 26. Utilizando o algoritmo anteriormente apresentado implemente um programa que insira dados em uma pilha A e em seguida remova-os elementos da pilha A e insira-os na pilha B com sua ordem invertida. Prof. Adriano Teixeira de Souza