Pessoal… boa tarde… estou com um probleminha neste código…
Se eu mandar excluir o primeiro de cara(número 4)… aparece a mensagem lista vazia 2 vezes… e após eu inserir algo e apertar a tecla de excluir primeiro (número 4)pela 2º vez ele da erro…
a exclusão do ultimo elemento a principio funiona…
Obs: a tecla 4 funcionava até eu inserir a tecla 5… que é para excluir o ultimo elemento
import javax.swing.JOptionPane;
public class Aluno
{
String nome;
int RA;
void ler()
{
nome = JOptionPane.showInputDialog("Digite nome: ");
RA = Integer.parseInt(JOptionPane.showInputDialog("Ra: "));
}
public boolean equals(Object ch)
{
String chave = (String)ch;
return nome.equals(chave);
}
public String toString ()
{
return "\n Nome : " + nome + "\n Ra : " + RA;
}
}
public class Lista
{
private class Celula
{
Object item;
Celula prox;
}
Celula primeiro;
Celula ultimo;
Celula pos;
public Lista ()
{
primeiro = new Celula();
primeiro.item = null;
primeiro.prox = null;
ultimo = primeiro;
pos = primeiro;
}
public void insere (Object novo)
{
ultimo.prox = new Celula();
ultimo = ultimo.prox;
ultimo.item = novo;
ultimo.prox = null;
}
public void imprime()
{
if (vazia())
{
System.out.println("Lista Vazia");
}
else
{
String s = "Lista: \n ";
for (Celula p = primeiro.prox; p!=null; p = p.prox)
{
{
s = s + p.item.toString() + "\n";
}
}
System.out.println(s);
}
}
public Object pesquisa(Object chave)
{
if(vazia () || chave ==null)
{
return null;
}
for(Celula p = primeiro.prox;p!=null;p=p.prox)
{
if(p.item.equals(chave))
{
return p.item;
}
}
return null;
}
public boolean vazia()
{
if (primeiro == ultimo)
{
return true;
}
else
{
return false;
}
}
public Object exclui(Object chave)
{
if (vazia () || chave == null) return null;
Object itemRetornar = null;
for (Celula p=primeiro;p!=ultimo;p=p.prox)
{
if(p.prox.item.equals(chave))
{ itemRetornar = p.prox.item;
if(ultimo == p.prox) ultimo =p;
p.prox = p.prox.prox;
break;
}
}
return itemRetornar;
}
public Object ExcluiPrimeiro()
{
if(vazia())return null;
{
Object itemRetornar = primeiro.prox.item;
primeiro.prox=primeiro.prox.prox;
return itemRetornar;
}
}
public Object ExcluiUltimo()
{// while(ultimo.item==primeiro)
{
Object itemRetornar = ultimo.item;
ultimo=pos;
ultimo.prox = null;
return itemRetornar;
}
}
}
______________________________________
import javax.swing.JOptionPane;
public class TesteLista
{
public static void main (String [] arqs)
{
Lista L = new Lista();
int opcao;
do
{
String menu = "Escolha : \n 1. Inserir \n 2. Imprimir \n 3. Pesquisar \n 4. Excluir Primeiro \n 5. Exluir Ultimo \n Aperte o 9 para sair..";
opcao = Integer.parseInt(JOptionPane.showInputDialog(menu));
switch(opcao)
{
case 1:
{
Aluno a = new Aluno();
a.ler();
L.insere(a);
break;
}
case 2:
{
L.imprime();
break;
}
case 3:
{
String n = JOptionPane.showInputDialog("Nome a pesquisar: ");
Aluno a = (Aluno)L.pesquisa(n);
if (a==null)
{
System.out.println("Não existente...");
}
else
{
System.out.println("Nome pesquisado foi : " + a);
}
break;
}
case 4:
{
Aluno a = (Aluno)L.ExcluiPrimeiro();
if(a!=null)
{
System.out.println("Item excluido é :" + a);
break;
}
else
{
System.out.println("lista vazia");
}
}
case 5:
{
Aluno a = (Aluno)L.ExcluiUltimo();
if (a!=null)
{
System.out.println("Item excluido é :" + a);
break;
}
else
{
System.out.println("lista vazia");
}
}
}
}while(opcao!=9);
}
}