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

246
Vistas
Alcance funcional/variable en una implementación de lista enlazada de javascript

Referencia a la solución javascript de leetcode: agregue dos números https://leetcode.com/problems/add-two-numbers/

Por qué el alcance de la lista no cambia cuando se cambia el alcance principal, es decir, cuando head.next se asigna a una nueva referencia de nodo y head se vuelve a asignar a head.next, entonces por qué List.next no cambió y permaneció igual que toda la lista vinculada

Consulte la solución a continuación:

 Definition for singly-linked list. function ListNode(val) { this.val = val; this.next = null; } @param {ListNode} l1 @param {ListNode} l2 @return {ListNode} var addTwoNumbers = function(l1, l2) { var List = new ListNode(0); var head = List; var sum = 0; var carry = 0; while(l1!==null||l2!==null||sum>0){ if(l1!==null){ sum = sum + l1.val; l1 = l1.next; } if(l2!==null){ sum = sum + l2.val; l2 = l2.next; } if(sum>=10){ carry = 1; sum = sum - 10; } head.next = new ListNode(sum); head = head.next; sum = carry; carry = 0; } return List.next; };

Intenté lo siguiente, pero dio un resultado diferente a continuación, b.next se cambia cuando se cambia a.next, ¿por qué?

 function value (val){ this.x = val;this.next = null;} let a = new value(1); console.log(ax); console.log(a.next, "a next"); let b = a; console.log(bx); console.log(b.next,"b next") a.next = 23; console.log(a.next, "a next"); console.log(b.next,"b next") VM1592:3 1 VM1592:4 null 'a next' VM1592:6 1 VM1592:7 null 'b next' VM1592:9 23 'a next' VM1592:10 23 'b next'

La lista no se cambia en el ejemplo anterior, pero ¿la cabeza cambió? ¿Por qué b se cambia con a cambiado? Por qué

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

head y List son variables que contienen referencias al mismo ListNode . Un ListNode es un objeto mutable. Por lo tanto, cuando cambias las propiedades de head , digamos cambia su next propiedad , this is reflected also in List`, ya que ambos apuntan al mismo objeto.

Ahora, cuando cambie el valor de head , diga head = head.next , List aún se refiere al ListNode inicial. head y List no son referencias entre sí. Cambiar uno en sí mismo no cambia el otro. Son solo punteros a un objeto. Solo el cambio de las propiedades del objeto en sí se refleja en el otro, siempre que ambos apunten al mismo objeto (al principio, claro).

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