Ir ao conteúdo
  • Cadastre-se

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


GBMelkor
Ir à solução Resolvido por GBMelkor,

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?

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

  • Solução

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

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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...