Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Como remover um nó no início de uma lista duplamente encadeada em Java - Escreva um programa Java que cria uma lista - Desafio de Programação Resolvido em JavaQuantidade de visualizações: 435 vezes |
Pergunta/Tarefa: Escreva um programa Java que cria uma lista dinâmica duplamente encadeada (lista duplamente ligada) e peça para o usuário inserir 5 elementos do tipo inteiro. Em seguida faça a remoção do nó no início da lista e retorne o seu valor. Sua saída deve ser parecida com: Inserindo valores na lista duplamente ligada: Informe o 1.o valor: 4 Informe o 2.o valor: 9 Informe o 3.o valor: 1 Informe o 4.o valor: 3 Informe o 5.o valor: 7 Valores na lista duplamente encadeada: 4 9 1 3 7 Removendo no início da lista O nó removido foi: 4 Valores na lista duplamente ligada novamente: 9 1 3 7 Na saída podemos ver que a lista contém os valores 4, 9, 1, 3 e 7. Depois que o nó no início é removido, os elementos da lista ficam 9, 1, 3 e 7. Veja a resolução comentada deste exercício usando Java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; // classe interna para representar os nós da // lista duplamente encadeada class No { int valor; // valor armazenado no nó No anterior; // aponta para o nó anterior No proximo; // aponta para o próximo nó // construtor do nó public No(int valor){ this.valor = valor; this.anterior = null; this.proximo = null; } } public class Estudos { // referência para o início da lista duplamente ligada static No inicio; // referência para o final da lista duplamente ligada static No fim; public static void main(String args[]){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos inserir 5 valores inteiros na lista ligada int valor; System.out.println("Inserindo valores na lista duplamente ligada:\n"); for (int i = 0; i < 5; i++) { System.out.print("Informe o " + (i + 1) + ".o valor: "); valor = Integer.parseInt(entrada.nextLine()); // vamos inserir este valor no final da lista inserirFinal(valor); } // vamos exibir os valores na lista duplamente ligada System.out.print("\nValores na lista duplamente encadeada: "); exibirLista(); // vamos remover o nó no início da lista duplamente ligada System.out.println("\nRemovendo no início da lista"); No removido = removerInicio(); System.out.println("O nó removido foi: " + removido.valor); // vamos exibir os valores na lista duplamente ligada System.out.print("\nValores na lista duplamente ligada novamente: "); exibirLista(); } // esta função permite inserir um novo nó no // final de uma lista duplamente encadeada public static void inserirFinal(int valor) { // o primeiro passo é construir um novo nó No novo = new No(valor); novo.anterior = null; // não possui nó anterior novo.proximo = null; // não possui nó próximo // a lista ainda está vazia? if (inicio == null) { // tanto o início quanto o fim da lista // apontam para o novo nó inicio = novo; fim = novo; } else { // o campo anterior do novo nó aponta para o // final da lista novo.anterior = fim; // o campo proximo do final da lista aponta // para o novo nó fim.proximo = novo; // finalmente o fim da lista aponta para // o novo nó fim = novo; } } // função que permite remover o nó no início de uma lista // duplamente ligada em Java public static No removerInicio() { // primeiro apontamos para o início da lista No no = inicio; // a lista está vazia? if (no != null) { // o início da lista aponta para o seu próximo inicio = inicio.proximo; // é o último nó da lista? if (inicio != null) { inicio.anterior = null; } } // retorna o nó removido ou null no caso da lista vazia return no; } // esta função permite exibir os valores de todos // os nós da lista duplamente encadeada public static void exibirLista() { // apontamos para o início da lista No temp = inicio; // a lista está vazia? if (inicio == null) { System.out.println("A lista está vazia"); return; } // enquanto temp for diferente de null while(temp != null) { // mostramos o valor do nó atual System.out.print(temp.valor + " "); // e pulamos para o nó seguinte temp = temp.proximo; } } } |
Link para compartilhar na Internet ou com seus amigos: |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como contar as ocorrências de um determinado caractere em uma string usando a linguagem CQuantidade de visualizações: 10991 vezes |
Em algumas situações precisamos obter a quantidade de vezes que um caractere ocorre dentro de uma string. Para isso podemos usar a função personalizada char_count(). Esta função recebe a string e o caractere que desejamos pesquisar e retorna um inteiro contendo a quantidade de vezes que o caractere foi encontrado. Veja o código (usando apenas ANSI-C): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> // função personalizada que permite contar as // ocorrências de um caractere em uma string int char_count(const char *str, char caractere){ int i, quant = 0; // vamos percorrer todos os caracteres da string for(i = 0; str[i]; i++){ if(str[i] == caractere){ // localizamos quant++; } } return quant; } int main(int argc, char *argv[]){ char frase[] = "Gosto muito de Java, JavaScript e Python"; printf("Ocorrencias encontradas: %d", char_count(frase, 'a')); puts("\n\n"); system("PAUSE"); return 0; } Ao executarmos este código nós teremos o seguinte resultado: Ocorrencias encontradas: 4 |
Python ::: NumPy Python Library (Biblioteca Python NumPy) ::: Arrays e Matrix (Vetores e Matrizes) |
Como repetir os elementos de um vetor ou matriz usando a função repeat() da NumPy do PythonQuantidade de visualizações: 614 vezes |
A função repeat() da biblioteca NumPy do Python é usada quando queremos repetir os elementos de um vetor ou matriz um determinado número de vezes. Em sua forma mais simples esta função pede um array e um número inteiro indicando a quantidade de repetições. Veja o código Python completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- # vamos importar a biblioteca NumPy import numpy as np def main(): # vamos criar um vetor contendo 5 elementos vetor = np.array([5, 3, 9, 1, 4]) # agora vamos aplicar a função repeat() a este vetor novo_vetor = np.repeat(vetor, 3) # vamos mostrar o resultado print("O vetor original é: {0}".format(vetor)) print("O novo vetor é: {0}".format(novo_vetor)) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: O vetor original é: [5 3 9 1 4] O novo vetor é: [5 5 5 3 3 3 9 9 9 1 1 1 4 4 4] Veja agora o efeito desta função em uma matriz de 2 linhas por 3 colunas: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- # vamos importar a biblioteca NumPy import numpy as np def main(): # vamos criar uma matriz de 2 linhas e 3 colunas matriz = np.array([(1, 2, 3), (4, 5, 6)]) # agora vamos aplicar a função repeat() a esta matriz nova_matriz = np.repeat(matriz, 3, 0) # vamos mostrar o resultado print("A matriz original é:\n\n{0}".format(matriz)) print("A nova matriz é:\n\n{0}".format(nova_matriz)) if __name__== "__main__": main() Note que informei o valor 0 para o terceiro parâmetro da função repeat(). Isso faz com que os elementos da matriz sejam repetidos no eixo x. Veja: A matriz original é: [[1 2 3] [4 5 6]] A nova matriz é: [[1 2 3] [1 2 3] [1 2 3] [4 5 6] [4 5 6] [4 5 6]] Se trocarmos o valor 0 por 1, o resultado será: A matriz original é: [[1 2 3] [4 5 6]] A nova matriz é: [[1 1 1 2 2 2 3 3 3] [4 4 4 5 5 5 6 6 6]] |
Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como listar os tipos de colunas e pilares disponíveis no Revit usando a Revit C# APIQuantidade de visualizações: 106 vezes |
Nesta dica mostrarei como podemos obter e retorna uma lista com as colunas e pilares disponíveis na sua instalação do Revit. Esse passo é muito importante quando precisamos informar o id do símbolo de família, ou seja, o tipo de coluna ou pilar que queremos criar, em um determinado momento, via programação Revit C# API. O primeiro passo é acessar o documento atual do Revit usando uma chamada à this.ActiveUIDocument.Document. Em seguida nós obtemos um objeto FilteredElementCollector para filtrar e retornar os símbolos de família que se enquadrem na categoria OST_StructuralColumns. Para finalizar, nós convertemos os elementos Element em FamilySymbol. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- using System; using Autodesk.Revit.UI; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Structure; using Autodesk.Revit.UI.Selection; using System.Collections.Generic; using Autodesk.Revit.DB.Architecture; using System.Linq; namespace Estudos { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes. TransactionMode.Manual)] [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")] public partial class ThisApplication { private void Module_Startup(object sender, EventArgs e) { // vamos obter uma referência ao Document ativo Document doc = this.ActiveUIDocument.Document; // vamos obter um FilteredElementCollector contendo apenas // elementos que sejam ElementType e pertençam à categoria // OST_StructuralColumns try { FilteredElementCollector elementos = new FilteredElementCollector(doc) .WhereElementIsElementType().OfCategory(BuiltInCategory.OST_StructuralColumns); String lista = ""; // vamos percorrer os elementos retornados foreach(Element elemento in elementos) { // vamos converter o Element em FamilySymbol FamilySymbol coluna = elemento as FamilySymbol; // agora montamos a lista de colunas (ou pilares) lista = lista + "Id: " + elemento.Id.IntegerValue + "; Nome: " + elemento.Name + "; Tipo: " + elemento.Category.Name + "; Família: " + coluna.Family.Name + "\n"; } // mostramos o resultado TaskDialog.Show("Aviso", lista); } catch (Exception ex) { TaskDialog.Show("Aviso", "Erro: " + ex.Message); } } private void Module_Shutdown(object sender, EventArgs e) { // para fazer alguma limpeza de memória ou algo assim } #region Revit Macros generated code private void InternalStartup() { this.Startup += new System.EventHandler(Module_Startup); this.Shutdown += new System.EventHandler(Module_Shutdown); } #endregion } } Ao executar este código Revit C# nós teremos o seguinte resultado: Id: 12190; Nome: UC305x305x97; Tipo: Pilares estruturais; Família: UC-Universal Columns-Column Id: 355634; Nome: 80 x 50; Tipo: Pilares estruturais; Família: Pila de Concreto - Retangular Id: 355636; Nome: 50 x 50; Tipo: Pilares estruturais; Família: Pila de Concreto - Retangular |
C++ ::: Dicas & Truques ::: Recursão (Recursividade) |
Como calcular fatorial em C++ usando recursividadeQuantidade de visualizações: 9327 vezes |
O fatorial de um determinado número, representado por n! equivale a multiplicar este número por seus antecessores. Assim, o fatorial de 4 (4!) pode ser calculado da seguinte forma: 4 x 3 x 2 x 1 = 24 Sempre que falamos de recursão, o cálculo de fatorial nos auxilia na exemplicação por ser relativamente fácil de se entender todas as etapas do processo. O código abaixo mostra uma função recursiva em C++ que calcula o fatorial de qualquer número. Tenha cuidado. Calcular o fatorial de um número maior que 10 pode tornar sua máquina extremamente lenta, além de, muitas vezes, não retornar os resultados esperados. ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; // função recursiva para calcular o fatorial // de um determinado número int fatorial(int n){ if(n == 0) return 1; else return n * fatorial(n - 1); } int main(int argc, char *argv[]){ // vamos calcular o fatorial de 5 int res = fatorial(5); // exibe o resultado cout << "O fatorial de 5 é: " << res << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
PHP ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como verificar a existência de um valor em um array PHP usando a função in_array()Quantidade de visualizações: 8718 vezes |
A função in_array() da linguagem PHP nos permite pesquisar um valor em um vetor (array). Se o valor for encontrado, o valor TRUE é retornado. Caso contrário o valor FALSE é retornado. Veja um exemplo PHP no qual temos um vetor de strings com nomes de pessoas e queremos encontrar a pessoa com o nome "Victor": ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?php /* Este exemplo mostra como verificar a existência de um valor em um array usando in_array(). */ $pessoas[0] = "Carlos"; $pessoas[1] = "Juliana"; $pessoas[2] = "Igor"; $pessoas[3] = "Marcelo"; $pessoas[4] = "Amélia"; if(in_array("Victor", $pessoas)){ echo "O valor pesquisado foi encontrado no array."; } else{ echo "O valor pesquisado NÃO foi encontrado no array."; } ?> Ao executar este código PHP nós teremos o seguinte resultado: O valor pesquisado NÃO foi encontrado no array. |
Desafios, Exercícios e Algoritmos Resolvidos de PHP |
Veja mais Dicas e truques de PHP |
Dicas e truques de outras linguagens |
Python - Exercício Resolvido de Python NumPy - Como somar duas matrizes usando a biblioteca NumPy do Python |
Códigos Fonte |
Software 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 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 |