Ir ao conteúdo

Posts recomendados

Postado
22 horas atrás, AnsiC disse:

Depende do método que são dois Exclusão física || lógica; Em ambos os casos, terá de localizar nó antes.

Minha ideia é remove um elemento especificado por 'dado', mas não consigo fazer isso, pois não consigo pegar o endereço do nó anterior para que ele aponte para o endereço do próximo(aquele que vem apos a exclusão).

Postado
void excluiValor(No **inicio)
{
 No *atual = *inicio, *anterior;
 int valor = 0;
 printf("Valor para exclusão: ");	
 scanf("%d", &valor);
 //verifica se está no inicio
 if ((atual != NULL) && (atual->valor == valor))
  { 
   *inicio = atual->next;
   free(atual);               
   return; 
  } 
 //procura pelo no
 while ((atual != NULL) && (atual->valor != valor))
 {
   anterior = atual;
   atual = atual->proximo;  
 }
 if (atual == NULL) return; //nao achou
 anterior->proximo = atual->proximo;
 free(atual);
}

veja se assim funciona (não pude testar);

 

  • Obrigado 1
Postado
10 horas atrás, Alberto_Santos disse:

não consigo pegar o endereço do nó anterior para que ele aponte para o endereço do próximo(aquele que vem apos a exclusão).

Declare variável auxiliar para lembra-lo, ou seja, antes que o algoritmo atualize nó atual copie-o para referência auxiliar caso o nó novo atual seja o 'dado' buscado a variável auxiliar fornecerá o ponteiro para o nó anterior.

  • Obrigado 1
Postado
Em 19/04/2019 às 10:33, Flávio Pedroza disse:

void excluiValor(No **inicio)
{
 No *atual = *inicio, *anterior;
 int valor = 0;
 printf("Valor para exclusão: ");	
 scanf("%d", &valor);
 //verifica se está no inicio
 if ((atual != NULL) && (atual->valor == valor))
  { 
   *inicio = atual->next;
   free(atual);               
   return; 
  } 
 //procura pelo no
 while ((atual != NULL) && (atual->valor != valor))
 {
   anterior = atual;
   atual = atual->proximo;  
 }
 if (atual == NULL) return; //nao achou
 anterior->proximo = atual->proximo;
 free(atual);
}

veja se assim funciona (não pude testar);

 

Obrigado, me ajudou a entender a lógica.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!