Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

224
Visualizações
¿Debería la función removeAt() eliminar el puntero del nodo de eliminación?

Soy un principiante en la codificación y recientemente estudié la lista vinculada en JavaScript.

Estoy confundido de que al eliminar el nodo, ¿también debo cambiar el puntero del nodo de eliminación a null ?

El método RemoveAt(index) es un método personalizado para eliminar el nodo en un índice específico.

Ejemplo de la siguiente manera:

 // remove node removeAt(index){ // check if index is qualified if(index < 0 || index > this.length) return null; let current = this.head, prev = null, idx = 0; // if first node if(index===0){ // point the head to next node this.head = current.next; }else{ // else find the index while(idx++ < index){ prev = current; // set prev node as current current = current.next; // and move current to the next node } // index finded, link prev.next & current.next prev.next = current.next; } this.length--; }

La mayoría de los ejemplos de listas vinculadas que vi en JS omitieron esto. Me pregunto si desperdiciará más memoria.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

No es necesario que asigne null a current . Es una variable que es local a la función, por lo que tan pronto como la función finaliza, no hay más referencias al nodo eliminado y se puede recolectar basura.

Si fuera del contexto de la función, tiene otra referencia al nodo que se elimina, entonces el nodo no se recolectará como basura. Asignar null a current no cambiará esa situación.

Sin embargo, algunos codificadores pueden querer aislar el nodo:

 current.next = null;

De esta forma, si en algún lugar todavía hay una referencia a ese nodo, no hay riesgo de pasar de ese nodo a la lista, lo que puede no ser deseado. Por otro lado, realmente es un olor de código si fuera de la función todavía hay una referencia al nodo que se elimina, y se volvería realmente maloliente si esa referencia todavía se usa para atravesar su next propiedad. Entonces, si el código general está haciendo lo correcto, tampoco necesita hacer current.next = null .

about 4 years ago · Juan Pablo Isaza Relatório

0

... mientras elimino el nodo, ¿también debo cambiar el puntero del nodo eliminado a null ? ... Me pregunto si desperdiciará más memoria.

No es necesario para la gestión de la memoria, no. (Creo que hay un argumento para hacerlo por otras razones, pero no por la administración de la memoria). Si elimina el nodo A sin borrar su puntero al nodo B, y nada más se refiere al nodo A, entonces es elegible para recolección de basura. (Y si también elimina B, el hecho de que A todavía se refiera a él no lo mantendrá en la memoria si nada más tiene una referencia a ellos; ambos serán elegibles para la recolección de basura).

about 4 years ago · Juan Pablo Isaza Relatório

0

No es necesario hacer eso, ya que está liberando esa parte de la memoria al eliminar el nodo, no importa cuál sea el contenido de la parte de datos de ese nodo liberado o la siguiente parte

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda