Lista Ligadas

2 respostas
Vanilson

Pessoal, começei a estudar listas ligadas a uns tempos atrás e estou a tentar adicionar um valor na lista so que ele me retorna um erro de excepção, eis o codigo:
No.java

public class No{
  public int valor;
  public No proximo;
}

Oplista.java

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;
	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);

		add(adicionar);
		add(excluir);
		add(visualizar);
		add(editar);
		
		getContentPane();
	}
	
	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)
			{
				inicio.valor=150;
				inicio.proximo=null;
			}
		JOptionPane.showMessageDialog(null,inicio.valor);
		//System.out.println(inicio.valor);
	}
	public void actionPerformed(ActionEvent event)
	{
		if(event.getSource()==adicionar)
		{
			adiciona();
		}
	}
	public static void main(String args[])
	{
		new Oplista();
	}
}

2 Respostas

Vanilson

Consegui fazer o adicionar pessoal, mais agora me encontro com erro ao visualizar os valores ele visualiza apenas o ultimo valor a ser inserido, 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);
	}
  	public void visualizar()
	{
    		if(inicio != null)
		{
      			do 
			{
       		 		JOptionPane.showMessageDialog(null,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();
	}
}
ViniGodoy

Cuidado, vários de seus métodos estão alterando o valor da variável inicio indevidamente.

Você só deve alterar esse valor caso o início mude. Em outros casos, como no caso do próprio método visualizar, faça uma cópia do valor e trabalhe com a cópia.

Criado 2 de maio de 2010
Ultima resposta 2 de mai. de 2010
Respostas 2
Participantes 2