链表操作中的值传递和地址传递

本文通过实例探讨JavaScript中链表操作时的引用传递与值传递概念。当赋值为节点时,链表操作属于引用传递,改变b会同步影响a;而当链表被赋值为非节点的值时,则表现为值传递,b的改变不会影响a。对于深入理解JavaScript中的数据操作具有重要意义。
摘要由CSDN通过智能技术生成

今天刷题时,遇到一个问题,链表不都是地址传递,当赋值不是节点时,是值传递,验证如下:

1、地址传递

function ListNode(val) {
      this.val = val;
      this.next = null;
}
let a = new ListNode(1);
let b = a; // 引用赋值
console.log(a,b);
b.next = new ListNode(2);
b = b.next;  //节点,引用赋值
console.log(a,b);

输出结果如下,显然可见,在b新增节点后,a也一起改变了,此时都是引用赋值:

2、值传递

修改 b = b.next 顺序后,先将b赋值为null:

function ListNode(val) {
      this.val = val;
      this.next = null;
}
let a = new ListNode(1);
let b = a; // 引用赋值
console.log(a,b);
b = b.next;  //赋值为null,值传递
b = new ListNode(2);
console.log(a,b);

输出结果如下,显然可见,当链表被赋值为数值后,就是值传递了,此时b与a就没有任何关系了,修改了b后,a也没有一起改变:

注:此处的值传递是指给链表赋值为数值时,而不是指给某一个节点赋值数值。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值