Você está aqui: Java ::: Estruturas de Dados ::: Lista Ligada Simples |
Estruturas de dados para iniciantes - Como criar uma Lista Ligada em JavaQuantidade de visualizações: 704 vezes |
A estrutura de dados Lista Ligada, ou Lista Encadeada, ou ainda Lista Singularmente Ligada, é a primeira estrutura de dados dinâmica que devemos estudar e dominar bem, antes de passarmos para as filas, pilhas, árvores e grafos. Uma Lista Ligada é uma estrutura de dados linear, na qual os elementos são guardados como nós. Cada nó da lista possui dois atributos: Um campo chamado "valor" ou "dados" (que pode guardar um valor inteiro, uma referência a um vetor ou matriz, objetos, etc) e um campo "proximo" (que guarda um ponteiro ou referência para o próximo elemento da lista, conforme mostrado na imagem abaixo: Essa definição é muito importante. Veja que temos uma estrutura ou classe (dependente da sua linguagem de programação) chamada No. O campo valor guarda o inteiro 15, enquanto o campo Proximo guarda uma referência a um objeto igual a ele, ou seja, o ponteiro "proximo" é o responsável pelo encadeamento da lista. Quando este ponteiro (ou referência) não estiver apontando para nenhum local de memória, então saberemos que ele é o último nó da lista. Quando encadeamos (ou ligamos) vários nós, temos a seguinte representaçaõ de lista ligada: Veja que nossa lista possui três nós. O primeiro nó, que é o início da lista, possui o valor 5, enquanto o terceiro nó, com o valor 4, é o final da lista. Em geral identificamos como final da lista o nó cujo ponteiro "proximo" não está apontando para nenhum outro nó. Agora que já vimos a teoria, vamos à implementação de uma lista encadeada simples em Java. Para facilitar seus estudos, eu optei por colocar tudo em apenas um código. Quando quiser avançar um pouco mais, divida as classes em arquivos .java separados. Eis o código completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; // definição da classe No class No { // valor inteiro que será guardado neste nó int valor; // ponteiro para o próximo nó da lista No proximo; }; // definição da classe ListaLigada class ListaLigada{ // aponta para o início da lista No inicio; // construtor que permite criar uma lista ligada vazia public ListaLigada(){ // o valor null para o início da lista indica que ela // está vazia this.inicio = null; } // método que permite exibir os nós da lista public void imprimirLista(){ // criamos um nó temporário para apontar para // o primeiro nó da lista No temp = this.inicio; // testamos se a lista não está vazia if(temp != null) { System.out.println("Os valores na lista ligada são:\n"); // varremos a lista até encontrarmos um nó nulo while(temp != null){ // exibimos o valor do nó System.out.print(temp.valor + " "); // e saltamos para o nó seguinte temp = temp.proximo; } } else { // a lista está vazia System.out.println("\nLista vazia\n"); } } }; public class Estudos { public static void main(String[] args){ // vamos criar uma lista ligada vazia ListaLigada lista = new ListaLigada(); // vamos inserir o primeiro nó na lista No no1 = new No(); no1.valor = 5; // define o valor do nó no1.proximo = null; // náo aponta para nenhum outro nó // marcamos este nó como sendo o início da lista lista.inicio = no1; // vamos inserir o segundo nó No no2 = new No(); no2.valor = 32; // define o valor do nó no2.proximo = null; // náo aponta para nenhum outro nó // o primeiro nó vai apontar para este nó agora no1.proximo = no2; // vamos inserir mais um nó? No no3 = new No(); no3.valor = 7; // define o valor do nó no3.proximo = null; // náo aponta para nenhum outro nó // o segundo nó vai apontar para este nó no2.proximo = no3; // vamos imprimir a lista lista.imprimirLista(); // uma quebra de linha pra deixar o console bonito System.out.println("\n"); } } Ao executar este código Java nós teremos o seguinte resultado: Os valores na lista ligada são: 5 32 7 |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Dicas & Truques ::: Data e Hora |
Como usar a classe Calendar do Java em suas aplicações - Java para iniciantesQuantidade de visualizações: 21059 vezes |
[Baseado na documentação Java] - A classe Calendar (pacote java.util) é uma classe abstrata (que não pode ser instanciada usando new) que fornece métodos para efetuar a conversão entre um momento específico no tempo e um conjunto de campos de calendário, tais como YEAR, MONTH, DAY_OF_MONTH, HOUR e assim por diante, e para manipular tais campos, por exemplo, obter a data da próxima semana. Um momento no tempo pode ser representado por um valor de milisegundos que é a diferença entre a data atual e a zero hora do dia 01/01/1970 (Epoch, January 1, 1970 00:00:00.000 GMT (Gregorian)). Veja a posição desta classe na hierarquia de classes Java: java.lang.Object java.util.Calendar Esta classe também fornece campos e métodos adicionais para a implementação de um sistema concreto de calendário fora do pacote java.util. Estes campos e métodos são definidos como protected. Assim como as demais classes sensitivas à localização (locale-sensitive), a classe Calendar fornece um método de classe chamado getInstance() que nos permite obter um objeto desta classe. Este método retorna um objeto Calendar cujos campos de calendário são inicializados com a data e hora atual. Veja: ---------------------------------------------------------------------- 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[]){ Calendar agora = Calendar.getInstance(); System.out.println(agora.toString()); } } Experimente executar este programa e terá um resultado parecido com: java.util.GregorianCalendar[time=1228937781807, areFieldsSet=true,areAllFieldsSet =true,lenient=true,zone=sun.util.calendar.ZoneInfo [id="America/Sao_Paulo",offset =-10800000,dstSavings=3600000,useDaylight=true, transitions=129,lastRule=java.uti l.SimpleTimeZone[id=America/Sao_Paulo,offset= -10800000,dstSavings=3600000,useDay light=true,startYear=0,startMode=3,startMonth=9, startDay=15,startDayOfWeek=1,sta rtTime=0,startTimeMode=0,endMode=3,endMonth=1, endDay=15,endDayOfWeek=1,endTime=0 ,endTimeMode=0]],firstDayOfWeek=2, minimalDaysInFirstWeek=1,ERA=1,YEAR=2008,MONTH =11,WEEK_OF_YEAR=50,WEEK_OF_MONTH=2,DAY_OF_MONTH= 10,DAY_OF_YEAR=345,DAY_OF_WEEK= 4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=5,HOUR_OF_DAY =17,MINUTE=36,SECOND=21,MILLI SECOND=807,ZONE_OFFSET=-10800000,DST_OFFSET=3600000] Como podemos ver, todas as informações relativas à data e hora que poderemos precisar estão contidas neste resultado. Um objeto Calendar pode produzir todos os valores de todos os campos de calendário necessários para implementar a formatação de data e hora para uma determinada língua e estilo de calendário (por exemplo, Japanese-Gregorian, Japanese-Traditional). A classe Calendar define a faixa de valores retornados por determinados campos de calendário, assim como seus significados. Por exemplo, o primeiro mês do sistema de calendário tem o valor MONTH == JANUARY para todos os calendários. Outros valores são definidos por subclasses concretas, tais como ERA. |
Java ::: Classes e Componentes ::: JComponent |
Java Swing - Como usar a classe JComponent em suas aplicações Java SwingQuantidade de visualizações: 11877 vezes |
A classe JComponent serve como classe base abstrata a partir da qual todos os componentes Swing herdam suas funcionalidades. Esta classe herda da Classe Container, que por sua vez herda de Component, que herda de Object. Várias classes do Java Swing herdam de JComponent, direta ou indiretamente. Por exemplo, a classe JButton herda de javax.swing.AbstractButton, que, por sua vez, herda de javax.swing.JComponent. Entender o papel da classe JComponent é muito importante, pois nos permite o uso de polimorfismo e também de vários design patterns. Sendo assim, analise o seguinte código Java Swing: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.awt.*; import javax.swing.*; public class Estudos extends JFrame{ public Estudos() { super("Minha primeira aplicação GUI"); // vamos declarar um objeto da classe JComponent // e atribuir a ele um JButton JComponent btn = new JButton("Clique Aqui"); getContentPane().add(btn, BorderLayout.SOUTH); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Veja que declaramos uma variável do tipo JComponent e atribuímos a ela um objeto da classe JButton. Isso é perfeitamente possível, já que JButton herda de JComponent, ainda que indiretamente. Entre as classes que herdam de JComponent estão: AbstractButton, BasicInternalFrameTitlePane, Box, Box.Filler, JColorChooser, JComboBox, JFileChooser, JInternalFrame, JInternalFrame.JDesktopIcon, JLabel, JLayeredPane, JList, JMenuBar, JOptionPane, JPanel, JPopupMenu, JProgressBar, JRootPane, JScrollBar, JScrollPane, JSeparator, JSlider, JSpinner, JSplitPane, JTabbedPane, JTable, JTableHeader, JTextComponent, JToolBar, JToolTip, JTree, JViewport. |
Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como somar os elementos da diagonal principal de uma matriz em JavaQuantidade de visualizações: 2774 vezes |
A Matriz quadrada é um tipo especial de matriz que possui o mesmo número de linhas e o mesmo número de colunas, ou seja, dada uma matriz Anxm, ela será uma matriz quadrada se, e somente se, n = m, onde n é o número de linhas e m é o número de colunas. Em geral as matrizes quadradas são chamadas de Matrizes de Ordem n, onde n é o número de linhas e colunas. Dessa forma, uma matriz de ordem 4 é uma matriz que possui 4 linhas e quatro colunas. Toda matriz quadrada possui duas diagonais, e elas são muito exploradas tanto na matemática quanto na construção de algorítmos. Essas duas diagonais são chamadas de Diagonal Principal e Diagonal Secundária. A diagonal principal de uma matriz quadrada une o seu canto superior esquerdo ao canto inferior direito. Veja: Nesta dica veremos como calcular a soma dos valores dos elementos da diagonal principal de uma matriz usando Java. Para isso, só precisamos manter em mente que a diagonal principal de uma matriz A é a coleção das entradas Aij em que i é igual a j. Assim, tudo que temos a fazer é converter essa regra para código Java. Veja um trecho de código Java completo no qual pedimos para o usuário informar os elementos da matriz e em seguida mostramos a soma dos elementos da diagonal superior: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args) { // vamos fazer a leitura usando a classe Scanner Scanner entrada = new Scanner(System.in); // vamos declarar e construir uma matriz de três linhas e três colunas int matriz[][] = new int[3][3]; int soma_diagonal = 0; // guarda a soma dos elementos na diagonal principal // vamos ler os valores para os elementos da matriz for(int i = 0; i < matriz.length; i++){ // linhas for(int j = 0; j < matriz[0].length; j++){ // colunas System.out.print("Informe o valor para a linha " + i + " e coluna " + j + ": "); matriz[i][j] = Integer.parseInt(entrada.nextLine()); } } // vamos mostrar a matriz da forma que ela // foi informada System.out.println(); // percorre as linhas for(int i = 0; i < matriz.length; i++){ // percorre as colunas for(int j = 0; j < matriz[0].length; j++){ System.out.printf("%5d ", matriz[i][j]); } // passa para a próxima linha da matriz System.out.println(); } // vamos calcular a soma dos elementos da diagonal // principal for(int i = 0; i < matriz.length; i++){ for(int j = 0; j < matriz[0].length; j++){ if(i == j){ soma_diagonal = soma_diagonal + matriz[i][j]; } } } // finalmente mostramos a soma da diagonal principal System.out.println("\nA soma dos elementos da diagonal principal é: " + soma_diagonal); } } Ao executar este código Java nós teremos o seguinte resultado: Informe o valor para a linha 0 e coluna 0: 3 Informe o valor para a linha 0 e coluna 1: 7 Informe o valor para a linha 0 e coluna 2: 9 Informe o valor para a linha 1 e coluna 0: 2 Informe o valor para a linha 1 e coluna 1: 4 Informe o valor para a linha 1 e coluna 2: 1 Informe o valor para a linha 2 e coluna 0: 5 Informe o valor para a linha 2 e coluna 1: 6 Informe o valor para a linha 2 e coluna 2: 8 3 7 9 2 4 1 5 6 8 A soma dos elementos da diagonal principal é: 15 |
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 |
Vamos testar seus conhecimentos em Fundações |
Fundações diretas ou rasas A viga de fundação é também chamada de viga baldrame. É utilizada para conectar sapatas isoladas e distribuir melhor o peso da estrutura para as camadas do solo. A partir disso, projete uma viga de fundação para os pilares P1 e P2, indicados na figura, sendo a taxa no solo σs = 0,4. Considere: P1 = P2 = 1.800KN. Dimensões P1 e P2 = 25cmX100cm. A) a = 400cm e b = 280cm. B) a = 365cm e b = 250cm. C) a = 250cm e b = 365cm. D) a = 345cm e b = 230cm. E) a = 405cm e b = 315cm. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Introdução à Ética Entre os estudos proeminentes sobre a definição da ética, da moral, sua presença e importância entre os seres humanos racionalmente organizados em sistemas sociais, as sociedades, estão as análises e reflexões dos filósofos da Grécia Antiga. Embora cada um, entre expoentes como Platão, Aristóteles e Sócrates, tivesse uma proposta de interpretação para a moral e para a ética, é possível dizer que há uma percepção comum: a de que a "A ética é a morada do homem". O que isso significa? A) A moradia física para o grego era a base da sociedade, em torno da qual circundavam os demais significados socialmente apreendidos, então, ser ético era ser bom. B) Morada é um recanto simples onde o homem pode viver com honestidade, e ser uma pessoa ética é ser honesto. C) O sentido de morada era conceito existencial, confiado ao cidadão que, vivendo conforme normas e leis existentes, teria a segurança de uma vida ética. D) Assim como o mito da caverna, a lenda da morada também é falsa e se destina à formação de exemplos aos estudantes de filosofia da atualidade. E) Aristóteles escreveu essa máxima pensando em todos os habitantes da Grécia, que exibiam a igualdade de comportamento, pensamento e opinião política. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Perfil em aço Alguns materiais fazem parte do processo de produção do aço ou até são resultantes de suas variações. Eles apresentam características que diferem entre si. Um desses materiais contém de 3 a 4% de carbono em sua composição. Assinale a alternativa que indica corretamente qual é esse material. A) Aço. B) Aço macio. C) Ferro fundido. D) Ferro forjado. E) Aço de médio carbono. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fundações |
Sondagem à Percussão (SPT) e Rotativa (RQD) Na sondagem SPT, o que significa o N30? A) Corresponde ao número de golpes dos últimos 30cm na fase de amostragem. B) Corresponde à energia de 30% a ser considerada. C) Corresponde a 30 golpes para penetrar um metro. D) Corresponde ao número de golpes dos primeiros 30cm do amostrador. E) Corresponde à energia que causa a perfuração dinâmica de 30cm com uma única pancada. 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 |
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 |