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