Ir ao conteúdo
  • Cadastre-se
GBMelkor

C++ RESOLVIDO Lista Simplesmente Encadeada //ERRO EXIBIÇÃO

Posts recomendados

Pessoal, não estou conseguindo exibir a lista resultante desta função:

TpPont * removerPar(TpPont *P){
	int elem = 0;
	while(!vazia(P)){
		P = P -> prox;
		if((P -> info)%2 == 0){
			P = retirar(P, elem);
		}
	}
	return P;
}

---

Também fiz do jeito abaixo, que deu certo e é exibido corretamente. Logo, o erro não está nas funções usadas ( retirar, inserir, vazia...):

TpPont * removerImpar(TpPont *P){
	int elem;
	TpPont *N = new TpPont;
	N = inicializar();
	
	while(!vazia(P)){
		if((P -> info%2) == 0){
			N = inserir(N, P -> info);
		}
		P = P -> prox;
	}
	delete(P);
	return N;
}

---

Imagino que seja algum erro de lógica, creio que, após percorrer toda a lista, a função retorna um ponteiro com valor null... O que vocês acham?

Compartilhar este post


Link para o post
Compartilhar em outros sites
while(!vazia(P)){
		//P = P -> prox;
		if((P -> info)%2 == 0){
			P = retirar(P, elem);
		}
       if (P != NULL) P = P -> prox;
	}

Tenta assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Flávio Pedroza Não deu certo :/, mas entendi o que você quis dizer! O programa executa normalmente, apenas não exibe a lista... Essa é a função que exibe:


void exibir(TpPont *P){
	while(!vazia(P)){
		printf(" %d ", P -> info);
		P = P -> prox;
	}
}

Ela executa normalmente antes da chamada da função removePar, mas após isso, a lista é dada como "vazia", por isso suspeito que o valor do ponteiro seja NULL...

 

OBS: Já havia feito uma depuração, por isso sei que a lista é dada como vazia. O programa segue, entra na função exibir, faz a verificação do while, mas não entra nele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tópico fechado, não houve soluções para o problema especificado.

 

Código alternativo, para remoção de números ímpares de uma lista:

TpPont * removerImpar(TpPont *P){
	TpPont *N = new TpPont;
	N = inicializar();
	while(!vazia(P)){
		if((P -> info%2) == 0)
			N = inserir(N, P -> info);
		if (P != NULL) 
			P = P -> prox;
	}
	delete(P);
	return N;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!