Você está aqui: Java ::: Estruturas de Dados ::: Pilhas

Como criar uma pilha em Java usando um vetor (array) - Estruturas de Dados em Java

Quantidade de visualizações: 2205 vezes
A Pilha é uma estrutura de dados do tipo LIFO - Last-In, First-Out (Último a entrar, primeiro a sair). Neste tipo de estrutura, o último elemento a ser inserido é o primeiro a ser removido. Veja a imagem a seguir:



Embora seja mais comum a criação de uma estrutura de dados do tipo Pilha de forma dinâmica (usando ponteiros e referências), nesta dica eu mostrarei como podemos criá-la em Java usando um array, ou seja, um vetor. No exemplo eu usei inteiros, mas você pode modificar para o tipo de dados que você achar mais adequado.

Veja o código completo para uma classe Pilha usando um vetor de ints. Veja que o tamanho do vetor é informado no construtor da classe. Note também a lógica empregada na construção dos métodos empilhar(), desempilhar() e imprimirPilha():

Código para Pilha.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

public class Pilha {
  private int elementos[]; // elementos na pilha
  private int topo; // o elemento no topo da pilha
  private int maximo; // a quantidade máxima de elementos na pilha

  // construtor da classe Pilha
  public Pilha(int tamanho) {
    // constrói o vetor
    this.elementos = new int[tamanho];
    // define o topo como -1
    this.topo = -1;
    // ajusta o tamanho da pilha para o valor recebido
    this.maximo = tamanho;
  }

  // método usado para empilhar um novo elemento na pilha
  public void empilhar(int item) {
    // a pilha já está cheia?
    if (this.topo == (this.maximo - 1)) {
      System.out.println("\nA pilha está cheia\n");
    } 
    else {
      // vamos inserir este elemento no topo da pilha
      this.elementos[++this.topo] = item;
    }
  }

  // méodo usado para desempilhar um elemento da pilha
  public int desempilhar() {
    // a pilha está vazia
    if (this.topo == -1) {
      System.out.println("\nA pilha está vazia\n");
      return -1;
    } 
    else {
      System.out.println("Elemento desempilhado: " + elementos[topo]);
      return this.elementos[this.topo--];
    }
  }

  // método que permite imprimir o conteúdo da pilha
  public void imprimirPilha() {
    // pilha vazia
    if (this.topo == -1) {
      System.out.println("\nA pilha está vazia\n");
    } 
    else {
      // vamos percorrer todos os elementos da pilha
      for (int i = 0; i <= this.topo; i++) {
        System.out.println("Item[" + (i + 1) + "]: " + this.elementos[i]);
      }
    }
  }
}

Veja agora o código para a classe principal, ou seja, a classe Main usada para testar a funcionalidade da nossa pilha:

Código para Principal.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

public class Estudos{
  public static void main(String[] args){
    // vamos criar uma nova pilha com capacidade para 5 elementos
    Pilha p = new Pilha(5);

    // vamos empilhar 3 elementos
    p.empilhar(34);
    p.empilhar(52);
    p.empilhar(18);

    // vamos mostrar os elementos na pilha
    System.out.println("Itens presentes na Pilha\n");
    p.imprimirPilha();

    // agora vamos remover e retornar dois elementos da pilha
    System.out.println();
    p.desempilhar();
    p.desempilhar();

    // vamos mostrar os elementos na pilha novamente
    System.out.println("\nItens presentes na Pilha\n");
    p.imprimirPilha();
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Itens presentes na Pilha

Item[1]: 34
Item[2]: 52
Item[3]: 18

Elemento desempilhado: 18
Elemento desempilhado: 52

Itens presentes na Pilha

Item[1]: 34

Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços

Exercícios Resolvidos de Java - Contando de 1 até 20 e formatando a saída usando System.out.printf()

Quantidade de visualizações: 10888 vezes
Exercício Resolvido de Java - Contando de 1 até 20 e formatando a saída usando System.out.printf()

Pergunta/Tarefa:

Escreva um programa Java console que usa o laço for para contar de 1 até 20 e exibir estes valores no seguinte formato:

 1    2    3    4    5   
 6    7    8    9   10   
11   12   13   14   15   
16   17   18   19   20


Dica: Use o operador de módulo % para determinar o momento da quebra de linha e o método System.out.printf() para formatar o valor a ser exibido de forma a adicionar a quantidade correta de espaços entre os valores.

Resposta/Solução:

Eis a solução para este exercício:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public static void main(String[] args){
  // laço for que conta de 1 até 20
  for(int i = 1; i <= 20; i++){
    System.out.printf( "%2d   ", i);

    if(i % 5 == 0){
      System.out.println();
    }
  }
}

O mais importante a considerar aqui é o uso do método System.out.printf() na linha:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

System.out.printf( "%2d   ", i);

Aqui nós estamos especificando a largura (width) do valor inteiro como
dois dígitos. Desta forma, se o valor for menor que 10 (um dígito), um 
espaço extra será adicionado à esquerda. Se o valor for maior que
9 (dois dígitos) nada acontece. Finalmente, três espaços são adicionados
à direita do valor.

Veja agora a explicação sobre o uso do operador de módulo % para provocar a quebra de linha após o quinto valor de cada fileira:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

Aqui nós testamos se o valor atual da variável i é múltiplo de 5 (para ser
múltiplo de 5, o resto da divisão inteira de valor por 5 deverá ser 0). 
Neste exemplo os valores que são múltiplos de 5 são: 5, 10, 15 e 20. Assim.
logo após estes valores nós fazemos uma chamada à:

System.out.println();

para provocar uma quebra de linha e iniciar uma nova fileira de
valores. 



Java ::: Fundamentos da Linguagem ::: Laços

Como usar o laço while da linguagem Java - Java para iniciantes

Quantidade de visualizações: 17286 vezes
O laço while é usado quando queremos executar um bloco de códigos continuamente até uma condição seja verdadeira. Veja sua estrutura:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

while(condição){
  // bloco de códigos
}

Diferente de C e C++, a condição a ser testada no while do Java deve sempre retornar um valor boolean. E, muito cuidado deve ser tomado para não produzirmos laços infinitos, ou seja, a condição sendo testada nunca retornará um valor false. Veja um trecho de código no qual exibimos os números pares de 0 a 20:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public class Estudos{
  public static void main(String args[]){
    
    int numero = 0;
    while(numero <= 20){
      System.out.println(numero);
      numero++;
    }

    System.exit(0);
  }
}

Veja outro exemplo no qual o laço while é executado até que o usuário digite "fim":

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import java.util.*;

public class Estudos{
  public static void main(String args[]){
    Scanner in = new Scanner(System.in);
    String palavra = "";    

    while(!palavra.equals("fim")){
      System.out.print("Digite uma palavra: ");
      palavra = in.nextLine();
      System.out.println("Você escreveu: " + palavra);
    }

    System.exit(0);
  }
} 

Para finalizar, lembre-se de que o laço while é executado somente enquanto a condição testada for verdadeira. Isso quer dizer que, se na primeira tentativa de execução, a condição já for falsa, o laço nunca será executado.


Java ::: Classes e Componentes ::: JTable

Java Swing - Como obter a quantidade de colunas em uma JTable usando o método getColumnCount()

Quantidade de visualizações: 8452 vezes
Nesta dica mostrarei como é possível contar as colunas de uma JTable com uma chamada ao método getColumnCount() da interface TableModel, que representa os dados contidos na tabela. Note que, neste exemplo, eu escrevi toda a aplicação Java Swing "na unha", ou seja, sem nenhum editor visual. Esta técnica é boa para entender todas as partes que compoem uma aplicação Java Swing.

Veja o código completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class Estudos extends JFrame{
  public Estudos(){
    super("Exemplo de uma tabela simples");
         
    // colunas da tabela
    String[] colunas = {"Cidade", "Estado", "Habitantes"};
         
    // conteúdo da tabela
         
    Object[][] conteudo = {
        {"Goiânia", "GO", "43.023.432"},
        {"São Paulo", "SP", "5.343.234"},
        {"Rio de Janeiro", "RJ", "6.434.212"},
        {"Jussara", "GO", "87.454"},
        {"Barra do Garças", "MT", "64.344"}
    };
         
    // constrói a tabela
    final JTable tabela = new JTable(conteudo, colunas);
    tabela.setPreferredScrollableViewportSize(
      new Dimension(350, 50));
     
    Container c = getContentPane();
    c.setLayout(new FlowLayout());
         
    JButton btn = new JButton("Número de Colunas");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          JOptionPane.showMessageDialog(null,
            "Quantidade de colunas: " + 
            tabela.getModel().getColumnCount(), 
            "JTable", JOptionPane.INFORMATION_MESSAGE);  
        }
      }
    );
         
    JScrollPane scrollPane = new JScrollPane(tabela);
    c.add(scrollPane);
    c.add(btn);
         
    setSize(400, 300);
    setVisible(true);
  }
     
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Ao executar este exemplo e clicar no botão nós veremos uma mensagem JOptionPane.showMessageDialog() com o seguinte texto:

Quantidade de colunas: 3


Vamos testar seus conhecimentos em AutoCAD Civil 3D

COGO Points no AutoCAD Civil 3D

Qual parâmetro do COGO point é controlado pela configuração Point Identity na barra de ferramentas Create Points?

A) Point location (Localização do ponto)

B) Point name (Nome do ponto)

C) Point description (Descrição do ponto)

D) Point number (Número de ponto)
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Alvenaria: Técnicas construtivas

Durante o levantamento, devemos aferir o nivelamento e o prumo de uma parede em blocos cerâmicos:

A) Somente se houver um embarrigamento ou desnivelamento visível.

B) Ao levantar 1,0 m a parede.

C) Somente na última fiada.

D) A cada fiada executada.

E) A cada 3 fiadas executadas.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte trecho de código JavaScript

var valores = new Array(2, 4);

Este código

A) cria uma matriz chamada valores com 2 linhas e 4 colunas.

B) cria um array valores e atribui os valores 2 e 4 para valores[1] e valores[2].

C) cria um array valores e atribui os valores 2 e 4 para valores[0] e valores[1].

D) cria um array de três elementos com os índices variando de 2 até 4.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Ética, Legislação e Entidades que regulamentam a profissão

São afirmativas corretas sobre a ética na profissão, exceto:

A) A ética é a reflexão sobre a moral. É ético aquele que age de acordo com os padrões de conduta ou prática correta, especialmente os padrões profissionais.

B) A engenharia, como profissão, deve contribuir para o bem-estar social, sendo o engenheiro responsável, através de suas ações e projetos, pelas consequências à sociedade que confia em sua competência profissional.

C) O comportamento ético para o engenheiro é uma habilidade tão importante como as habilidades técnicas, matemáticas e científicas.

D) Como engenheiro, você deve apoiar-se em seus princípios éticos pessoais, diferenciando pequenos desvios de ações de grande impacto à sociedade. Somente grandes ações configuram um problema ético.

E) A ética está associada ao estudo fundamentado dos valores morais que orientam o comportamento humano em sociedade.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Ações em estruturas: apresentação dos principais carregamentos na análise de estruturas convencionais

Uma das formas de produzir energia elétrica é por meio da energia nuclear. A energia nuclear frequentemente é contestada por apresentar dois grandes problemas: a geração de lixo nuclear, de difícil descarte; e a fragilidade estrutural dos reatores nucleares.
Quanto ao segundo ponto, é necessário construir uma estrutura no entorno dos reatores que seja capaz de absorver, inclusive, o impacto de uma bomba (em caso de guerra). Uma bomba é um caso de que tipo de ação?

A) Permanente direta.

B) Excepcional.

C) Acidental indireta.

D) Acidental direta.

E) Permanente indireta.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 57 usuários muito felizes estudando em nosso site.