Vanilson 2 Denunciar post Postado Maio 2, 2010 Pessoal, começei a estudar listas ligadas a algum tempo atrás e no entanto estou a tentar inserir e visualizar os dados...so que acontece que ao visualizar os dados ele visualiza apenas os dois primeiros, eis o codigo: No.java public class No { public int valor; public No proximo; } Oplista.java import javax.swing.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; import java.awt.event.*; import java.awt.*; public class Oplista extends JFrame implements ActionListener { private JButton adicionar, excluir, visualizar, editar; String valor_recebido; int valor_recebido_convertido,i; static No inicio = null; static No fim; //private JPanel botoes; public Oplista() { super("::..Listas Ligadas..::"); formulario(); setVisible(true); setSize(250,100); setLocationRelativeTo(null); setResizable(false); //pack(); } public void formulario() { setLayout(new GridLayout(2,2)); adicionar = new JButton("Adicionar"); excluir = new JButton("Excluir"); visualizar = new JButton("Visualizar"); editar = new JButton("Editar"); adicionar.addActionListener(this); visualizar.addActionListener(this); add(adicionar); add(excluir); add(visualizar); add(editar); getContentPane(); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public void adiciona() { /*fim = inicio; if(inicio==null) inicio = new No(); //Reserva no espaço de memória caso inicio(Head) esteja vazio fim = inicio; if(inicio!=null) { for(i=0;i<=10;i++) { valor_recebido = JOptionPane.showInputDialog("Insira o valor desejado"); valor_recebido_convertido = Integer.parseInt(valor_recebido); inicio.valor=valor_recebido_convertido; inicio.proximo=null; } }*/ //System.out.println(inicio.valor); No temp; if(inicio == null) { valor_recebido = JOptionPane.showInputDialog("Insira o valor desejado"); valor_recebido_convertido = Integer.parseInt(valor_recebido); inicio = new No(); inicio.valor = valor_recebido_convertido; inicio.proximo = null; } else { temp = inicio; // varrer a lista até encontrar o último nó while(temp.proximo != null) temp = temp.proximo; //último nó encontrado...vamos criar um novo nó agora temp.proximo = new No(); // atribui o valor do nó for(i=0;i<=10;i++) { valor_recebido = JOptionPane.showInputDialog("Insira o valor desejado"); valor_recebido_convertido = Integer.parseInt(valor_recebido); temp.proximo.valor = valor_recebido_convertido; // define o campo proximo do nó como null temp.proximo.proximo = null; } } } public void visualizar() { if(inicio != null) { do { JOptionPane.showMessageDialog(null,"Os valores da lista são " + inicio.valor); //inicio = inicio.proximo; } while(inicio != null); } else JOptionPane.showMessageDialog(null,"A lista está vazia"); } public void actionPerformed(ActionEvent event) { if(event.getSource()==adicionar) { adiciona(); } else if(event.getSource()==visualizar) { visualizar(); } } public static void main(String args[]) { new Oplista(); } } Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Maio 4, 2010 Ainda ontem lhe passei a resolução.. a ideia é receber o valor a ser adicionado como argumento e retirar o ciclo dentro do metodo adiciona, desse jeito você só precisará usar o metodo adiciona sempre que precisar, em qualquer ciclo.. não conseguiu usar o código q lhe passei? Compartilhar este post Link para o post Compartilhar em outros sites
Vanilson 2 Denunciar post Postado Junho 10, 2010 Ritchie, desculpa ai pela demora a responder...O problema foi resolvido da forma que tu falaste, apenas estava a faltar um pouco de atenção... Valeu Compartilhar este post Link para o post Compartilhar em outros sites
tesch 0 Denunciar post Postado Setembro 8, 2010 cara mais a lista ligada, mostra apenas o numero atual e o proximo se você quiser mostrar ainda o anterior nesse caso seria uma lista duplamente ligada se quiser eu t arranjo o codigo de uma lista ligada simples pra você ter uma noção de como é Compartilhar este post Link para o post Compartilhar em outros sites