Please ajudem-me com um metodo que remove um elemento que nao esteja na cabeca de uma lista simplesmente ligada…
Remover um elemento duma lista ligada
3 Respostas
Posta o codigo e fale com mais clareza…
nao tenho o codigo cmgo pois tou num net cafe, mas o codigo sta assim
uma lista simplesmente ligada, em que cada elemento tem um apontador para o proximo elemento
e eu tenho que desenvolver um codigo que possa remover qualquer um dos elementos dependendo do utilizador.
1 like
Remove qualquer no da sua lista
Metodo que vc quer fazer
Entenda e modifique se necessario
public void Remover(int elemento)
{
No NoTemp = primeiro;
No NoAnt = null;
if (primeiro.elemento == elemento)
{
primeiro = primeiro.prox;
}
else
{
while (NoTemp !=null && NoTemp.elemento != elemento)
{
NoAnt = NoTemp;
NoTemp = NoTemp.prox;
}
if(NoTemp != null)
{
NoAnt.prox = NoTemp.prox;
}
if(NoTemp == ultimo)
{
ultimo = NoAnt;
}
}
}
Classe inteira
import javax.swing.*;
class No
{
int elemento;
No prox;
No (int elem){
elemento = elem;
prox = null;
}
}
class ListaLigada
{
No primeiro, ultimo;
ListaLigada ()
{
primeiro = null;
ultimo = null;
}
public boolean ListaVazia()
{
if (primeiro == null && ultimo == null)
{
return true;
}
else
{
return false;
}
}
public void InserirInicio(No novoNo)
{
if (ListaVazia())
{
ultimo = novoNo;
}
else
{
novoNo.prox = primeiro;
}
primeiro = novoNo;
}
public void InserirFinal(No novoNo)
{
if (ListaVazia())
{
primeiro = novoNo;
}
else
{
ultimo.prox = novoNo;
}
ultimo = novoNo;
}
public int ContarNos()
{
int tamanho = 0;
No NoTemp = primeiro;
while (NoTemp !=null)
{
tamanho = tamanho+1;
NoTemp = NoTemp.prox;
}
return tamanho;
}
public void InserirMeio(No NovoNo, int posicao)
{
No NoTemp = primeiro;
int NroNos, posAux = 1;
NroNos = ContarNos();
if(posicao <= 1)
{
InserirInicio(NovoNo);
}
else
{
if (posicao > NroNos)
{
InserirFinal(NovoNo);
}
else
{
while (posAux < (posicao -1))
{
NoTemp = NoTemp.prox;
posAux = posAux + 1;
}
NovoNo.prox = NoTemp.prox;
NoTemp.prox = NovoNo;
}
}
}
public void Remover(int elemento)
{
No NoTemp = primeiro;
No NoAnt = null;
if (primeiro.elemento == elemento)
{
primeiro = primeiro.prox;
}
else
{
while (NoTemp !=null && NoTemp.elemento != elemento)
{
NoAnt = NoTemp;
NoTemp = NoTemp.prox;
}
if(NoTemp != null)
{
NoAnt.prox = NoTemp.prox;
}
if(NoTemp == ultimo)
{
ultimo = NoAnt;
}
}
}
public void ElementoInicio()
{
if(!ListaVazia())
{
System.out.println("O primeiro elemento "+primeiro.elemento);
}
else
{
System.out.println("Lista ligada vazia");
}
}
public void ElementoFinal()
{
if(!ListaVazia())
{
System.out.println("O ltimo elemento "+ultimo.elemento);
}
else
{
System.out.println("Lista ligada vazia");
}
}
public No BuscarNo (int elemento)
{
int i = 1;
No NoTemp = primeiro;
while (NoTemp !=null)
{
if(NoTemp.elemento == elemento)
{
System.out.println("No "+ NoTemp.elemento + " posicao " +i);
return NoTemp;
}
i = i +1;
NoTemp = NoTemp.prox;
}
return null;
}
public void MostrarLista()
{
int i = 1;
No NoTemp = primeiro;
while (NoTemp !=null)
{
System.out.println("Elemento " + NoTemp.elemento + " posicao " +i );
NoTemp = NoTemp.prox;
i = i +1;
}
}
}
class Exemplo1
{
public static void main (String args[])
{
ListaLigada realLista = new ListaLigada();
int i;
int num;
for (i = 1; i<=5; i++)
{
num = Integer.parseInt(JOptionPane.showInputDialog("Digite um nr ") );
realLista.InserirFinal(new No(num));
}
realLista.MostrarLista();
System.exit(0);
}
}
Criado 7 de novembro de 2008
Ultima resposta 8 de nov. de 2008
Respostas 3
Participantes 3
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo