Ir ao conteúdo
  • Cadastre-se

C Lista dinamica como remover elementos


MadroxD

Posts recomendados

Pessoal to com um problema aqui, eu precisava criar uma lista q ficasse removendo os seus elementos de 2 em 2, por exemplo se minha lista tiver 6 elementos (1,2,3,4,5,6) e fosse definido que ela comece as eliminacoes pelo numero 1, o primeiro elemento a sair seria o 3 em seguida o 5. criei a função que insere, remove,imprime e conta quantos elementos tem a lista. no main eu criei pra testar:

	int i;
	int m=6, p=1, n=2;



		for(i=p; i<=m; i++){
			Inserir(&cabeca,i);
		}

		printf("a lista tem %d elementos\neles:",qtd);
		Listar(cabeca);
	
		for(i=p+n; i<=m; i=i+n){
			printf("\nFOI REMOVIDO %d DA LISTA\n",i);
			Remover(&cabeca,i);
		}
	
		printf("\na lista tem %d elementos\neles:",qtd);
		Listar(cabeca);
	
		for(i=p+n; i<=qtd; i=i+n){
			printf("\nFOI REMOVIDO %d DA LISTA\n",i);
			Remover(&cabeca,i);
		}

no primeiro for ele fez certinho removeu o numero 3 e 5, a lista que possuía 6 elementos agora tem 4 { 1,2,4,6} . Então no segundo for era para ser removido o numero 4 e voltar para o laço, 4 porque é ele q esta na posição 3. mas o problema é que esta removendo os mesmo numeros da anterior ...

 gostaria q vocês me ajudasse nessa!!

 

 

printf11.png

Link para o comentário
Compartilhar em outros sites

Tem duas dificuldades em escrever essas coisas:

uma é que as listas não são por definição posicionais. Para isso se usam outras estruturas, como vetores. Então para ter acesso ao n-ésimo elemento de uma lista é preciso implementar suporte à essa nova função

outra é que ao apagar cada elemento a ordem muda porque cada elemento só conhece a si e aos vizinhos

 

Uma solução fácil seria pegar a função que lista os elementos e a que apaga e criar uma terceira tipo

int apaga_de_n_em_n( Lista** lista, int inicial, int n );

E aí apagar um cara a cada 'n' a partir do 'inicial' como precisa...

 

Em seu exemplo, quando fala em começar por 1 fala da posição 1 ou do número 1? Sua lista pode ter duplicidade? Como funcionaria nesse caso? É preciso formalizar essas definições.

 

Sua função que remove um elemento remove por valor ou por posição?

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!