You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript合并链表时空链表赋值无效及输出含undefined问题咨询

问题原因解答

初始版本代码(仅修改current变量)失效的原因

  • 在JavaScript中,current = l1.head 属于值拷贝操作:当l1.head为null时,null是基础类型,你只是把null的值赋值给了current变量,后续执行current = l2.head仅仅是修改了current变量本身的存储值,完全没有修改l1实例的head属性,所以l1.head始终保持为null,自然打印l1的时候没有任何链表数据。
  • 你编写的mergeTwoLists函数存在的也是同样问题:只修改了局部变量current的指向,没有对l1的head属性做任何赋值操作,所以执行后l1.head仍然是null。

修改版本代码可正常打印但末尾多出undefined的原因

  • 你直接修改l1.head = l2.head,是直接对l1实例的head属性赋值,让它指向了l2的头节点,所以遍历链表的时候能正确拿到l2的所有元素,打印出1、3、4。
  • 末尾多出的undefined是因为你调用了console.log(l1.show()):你定义的show方法本身没有显式return返回值,JavaScript中函数没有return时默认返回undefined,show方法内部已经完成了三次console.log打印节点数据,外层的console.log又把show方法返回的undefined打印了出来,所以末尾多了一行undefined。
  • 额外提醒:你修改l1.head的时候仅同步了头节点指向,没有同步更新l1的size属性,此时l1的size还是0,后续调用insertAt、removeat等依赖size的方法会出现逻辑错误,建议追加l1.size = l2.size的赋值操作。

内容的提问来源于stack exchange,提问作者user17146394

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:36:02