Implementar algoritmo na Lista Encadeada que remova todas as ocorrencias de um determinado elemento na lista encadeada.
16/05/2016
0
Implementar um método que remova todas as ocorrências de um determinado elemento na Lista encadeada.
Ex:
2->10->4->10->13
removerElemento(10)
ficaria
2->4->13
Jaimes Brooklin
Post mais votado
16/05/2016
Jothaz
Mais Posts
16/05/2016
Jaimes Brooklin
16/05/2016
Jothaz
list.Sort(); Int32 index = 0; while (index < list.Count - 1) { if (list[index] == list[index + 1]) list.RemoveAt(index); else index++; }
public static List<T> Deduplicate<T>(this List<T> listToDeduplicados) { return listToDeduplicados.Distinct().ToList(); }
int i = 1; while(i<list.Count) { int j = 0; bool remove = false; while (j < i && !remove) { if (list[i].Equals(list[j])) { remove = true; } j++; } if (remove) { list.RemoveAt(i); } else { i++; } }
16/05/2016
Jaimes Brooklin
18/05/2016
Jaimes Brooklin
Até aqui implemetei esse método que é pra remover os números recorrentes mas não onde esta o erro
na impressão não está removendo o numero se puder me ajudar agradeco!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package estruturasDados;
/**
*
* @author
*/
public class Lista {
private Celula inicio;
private Celula fim;
public void adiciona(int conteudo) {
Celula nova = new Celula();
nova.setConteudo(conteudo);
nova.setProx(inicio);
if (ehVazia()) {
fim = nova;
}
inicio = nova;
}
public void adicionaFim(int conteudo) {
if (ehVazia()) {
adiciona(conteudo);
} else {
Celula nova = new Celula();
nova.setConteudo(conteudo);
nova.setProx(null);
fim.setProx(nova);
fim = nova;
}
}
public void adiciona(int conteudo, int posicao) {
Celula ant = getCelula(posicao);
if (ant == null) {
if (posicao == 1) {
adiciona(conteudo);
} else {
adicionaFim(conteudo);
}
} else {
Celula nova = new Celula();
nova.setConteudo(conteudo);
nova.setProx(ant.getProx());
ant.setProx(nova);
}
}
public void removeInicio() {
if (!ehVazia()) {
inicio = inicio.getProx();
}
}
public void removeFim() {
if (!ehVazia()) {
if (inicio == fim) {
removeInicio();
} else {
Celula it = inicio;
while (it.getProx() != fim) {
it = it.getProx();
}
it.setProx(null);
fim = it;
}
}
}
public void remove(int posicao) {
if (!ehVazia()) {
if (posicao == 1) {
removeInicio();
} else {
Celula ant = getCelula(posicao);
if (ant != fim && ant != null) {
Celula aux = ant.getProx();
ant.setProx(aux.getProx());
aux.setProx(null);
}
}
}
}
public boolean pesquisa(int chave) {
Celula it = inicio;
while (it != null) {
if (it.getConteudo() == chave) {
return true;
} else {
it = it.getProx();
}
}
return false;
}
public boolean ehVazia() {
if (inicio == null) {
fim = null;
return true;
} else {
return false;
}
}
public void percorreLista() {
Celula it = inicio;
while (it != null) {
System.out.print(it.getConteudo() + "->");
it = it.getProx();
}
System.out.println("");
}
public String percorreLista2() {
Celula it = inicio;
String s = "";
while (it != null) {
s = s + it.getConteudo() + "->";
it = it.getProx();
}
s = s + "\n";
return s;
}
/**
* Método que retorna a celula anterior a posicao
*
* @param posicao um inteiro >=1
* @return a celula anterior a posicao
*/
private Celula getCelula(int posicao) {
if (!ehVazia()) {
int i = 1;
Celula it = inicio;
while ((posicao - 1 != i) && (it != null)) {
it = it.getProx();
i++;
}
return it;
}
return null;
}
public void removeElemento(int elemento) {
if (!ehVazia()) {
Celula aux = inicio;
int cont = 0;
while(aux!=null){
if (elemento==aux.getConteudo()) {
remove(cont);
}
else{
cont++;
}
aux.getProx();
}
}
}
}
public class Main {
public static void main(String[] args) {
Lista listaNumeros = new Lista();
listaNumeros.adiciona(9);
listaNumeros.adiciona(3);
listaNumeros.adicionaFim(5);
//System.out.println("Impressão da lista");
//listaNumeros.percorreLista();
listaNumeros.removeInicio();
//System.out.println("Após remoção do inicio");
listaNumeros.percorreLista();
listaNumeros.adiciona(3);
//System.out.println("Impressão da lista com 3 de novo");
listaNumeros.percorreLista();
//listaNumeros.removeFim();
System.out.println("Após remoção do fim");
listaNumeros.percorreLista();
listaNumeros.removeElemento(3);
//System.out.println("Após remoção do fim");
listaNumeros.percorreLista();
}
}
18/05/2016
Jothaz
Por favor poste o código usando a tag code.
Clique aqui para fazer login e interagir na Comunidade :)