Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda