Java ::: Estruturas de Dados ::: Lista Ligada Simples |
Estruturas de Dados em Java - Como obter a quantidade de nós em uma lista singularmente ligada usando JavaQuantidade de visualizações: 7317 vezes |
|
Em algumas situações precisamos obter a quantidade de nós em uma lista singularmente ligada. Nesta dica eu mostro como isso pode ser feito. Aqui estou assumindo que você criou uma lista singularmente ligada que possui dois nós gerenciadores, ou seja, uma referência para o primeiro nó na lista e uma referência para o último nó. Veja o código para um método que retorna a quantidade de nós na lista:
// método que permite exibir os valores de
// todos os nós da lista
public int tamanho() {
int tam = 0; // representa a quantidade de nós na lista
// vamos obter uma referência ao início da lista
No no = inicio;
while (no != null) { // enquanto a lista não estiver vazia
tam++; // incrementamos a variável tam
no = no.proximo; // pula para o nó seguinte
}
return tam;
}
Veja como podemos chamar este nó a partir da classe principal da aplicação (Main.java):
public class Main {
public static void main(String[] args) {
// vamos criar uma nova lista
Lista lista = new Lista();
// insira alguns nós no início ou no final
// da lista
// exibe a quantidade de nós na lista
System.out.println("A lista possui " + lista.tamanho() +
" nós");
}
}
Ao executar a aplicação você terá um resultado parecido com: A lista possui 4 nós. |
Dart ::: Dicas de Estudo e Anotações ::: Estruturas de Controle |
Como usar if...else em Dart - Como usar a estrutura condicional if... else if... else da linguagem DartQuantidade de visualizações: 3573 vezes |
|
Na maioria das linguagens de programação, a estrutura condicional if... else if... else é usada para testar condições e, baseado no resultado dos testes, desviar o fluxo de execução do algorítmo. Veja um exemplo no qual pedimos para o usuário digitar um valor inteiro e efetuamos um teste para saber se o valor é maior que 10:
// Vamos importar a biblioteca dart:io
import 'dart:io';
void main() {
// vamos pedir para o usuário digitar um valor inteiro
stdout.write("Digite um número inteiro: ");
// vamos converter a entrada do usuário para um inteiro e
// e guardar na variavel valor
int valor = int.parse(stdin.readLineSync());
// vamos verificar se o valor lido é maior que 10
if (valor > 10) {
print("O valor é maior que 10.");
} else {
// não é maior que 10
print("O valor não é maior que 10.");
}
}
Este código produz as seguintes saídas: c:\estudos_dart>dart condicional_if_else.dart Digite um número inteiro: 4 O valor não é maior que 10. c:\estudos_dart>dart condicional_if_else.dart Digite um número inteiro: 10 O valor não é maior que 10. c:\estudos_dart>dart condicional_if_else.dart Digite um número inteiro: 15 O valor é maior que 10. Note que testamos apenas um condição e já desviamos para o else caso ela não seja satisfeita. A linguagem Dart nos permite usar if...else aninhados. Veja:
// Vamos importar a biblioteca dart:io
import 'dart:io';
void main() {
// vamos pedir para o usuário digitar um valor inteiro
stdout.write("Digite um número inteiro: ");
// vamos converter a entrada do usuário para um inteiro e
// e guardar na variavel valor
int valor = int.parse(stdin.readLineSync());
// vamos verificar se o valor lido é maior que 10
if (valor > 10) {
print("O valor é maior que 10.");
} else if (valor == 10) {
// é igual a 10
print("O valor é igual a 10.");
} else {
// é menor que 10
print("O valor é menor que 10.");
}
}
Execute este código, digite um valor inteiro e observe seu comportamento. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Como resolver o problema da Torre de Hanói recursivamenteQuantidade de visualizações: 3235 vezes |
|
Pergunta/Tarefa: Torre de Hanói, ou The Towers of Hanoi, é um "quebra-cabeça" que consiste em uma base contendo três pinos, em um dos quais são dispostos alguns discos uns sobre os outros, em ordem crescente de diâmetro, de cima para baixo. O problema consiste em passar todos os discos de um pino para outro qualquer, usando um dos pinos como auxiliar, de maneira que um disco maior nunca fique em cima de outro menor em nenhuma situação. O número de discos pode variar sendo que o mais simples contém apenas três. A solução da Torre de Hanói (The Towers of Hanoi) pode ser feita recursivamente da seguinte forma: O caso base (parada da recursão) é quando n = 1. Se n = 1 nós podemos simplesmente mover o disco de A para B, sem precisar passar pelo pino C. Quando n > 1 nós podemos dividir o problema original em três sub-problemas e resolvê-los sequencialmente. 1) Mova os primeiros n - 1 discos de A para C com a ajuda do pino B; 2) Mova o disco n de A para B; 3) Mova n - 1 discos do pino C para o pino B com a ajuda do pino A. Além de resolver o problema, seu programa deverá informar quantas chamadas recursivas foram feitas. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console:
package arquivodecodigos;
import java.util.Scanner;
public class Estudos {
static int quantChamadasRecursivas = 0; // registra as chamadas recursivas
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
// vamos ler a quantidade de discos a serem usados na simulação
System.out.print("Informe a quantidade de discos: ");
int discos = Integer.parseInt(entrada.nextLine());
// resolve o problema recusivamente
System.out.println("\nOs movimentos para resolver o problema foram:\n");
moverDiscos(discos, 'A', 'B', 'C');
System.out.println("\nForam feitas " + quantChamadasRecursivas +
" chamadas recursivas");
System.out.println();
}
// método recursivo que resolve o problema da Torre de Hanói
public static void moverDiscos(int n, char daTorre, char paraTorre,
char torreAux) {
quantChamadasRecursivas++; // registra mais uma chamada recursiva
if(n == 1){ // condição de parada
System.out.println("Movendo o disco " + n + " de " + daTorre + " para " +
paraTorre);
}
else{ // faz mais uma chamada recursiva
moverDiscos(n - 1, daTorre, torreAux, paraTorre);
System.out.println("Movendo o disco " + n + " de " + daTorre + " para " +
paraTorre);
moverDiscos(n - 1, torreAux, paraTorre, daTorre);
}
}
}
|
Java ::: Dicas & Truques ::: Input e Output (Entrada e Saída) |
Java para iniciantes - Como usar a classe File em suas aplicações JavaQuantidade de visualizações: 11203 vezes |
A classe File, contida no pacote java.io, é uma representação abstrata de nomes de arquivos e diretórios. Veja sua posição na hierarquia de classes Java:java.lang.Object java.io.File Esta classe implementa as interfaces: Serializable e Comparable<File>. Instâncias desta classe são imutáveis, ou seja, uma vez criado, o caminho abstrato representado por um objeto File nunca mudará. É importante observar que, ao criar uma instância de File, como no código abaixo:
File arquivo = new File("C:\\", "texto.txt");
o arquivo "texto.txt" não será criado. O que temos é a construção de um objeto File. Da mesma forma, quando destruímos um objeto File, o arquivo representado por ele no sistema não será excluído. |
Nossas 20 dicas & truques de programação mais populares |
|
Python - Como verificar se uma string contém apenas caracteres de espaços em Python usando a função isspace() Java - Como construir uma data em Java usando o método set() da classe Calendar - Apostila Java Básico |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Python - Como criar um relógio analógico no Pygame - Código completo com variáveis e comentários em português |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





