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

调用linkAndMove后链表la尾节点为何从NULL变为lb的5节点?

问题原因

  1. 你调用Union函数时,是把la直接作为第三个参数lc传入的,所以linkAndMove里的finNode指针全程操作的就是la链表的尾节点。
  2. 当la的遍历指针pNode走到NULL时,触发了如下逻辑:
if (pNode == NULL) {
    linkFlag = moveFlag = 1;
}

此时linkAndMove进入linkFlag=1的分支,执行(*finNode)->next = (*qNode);,这里是直接把lb中指向值为5的节点的指针赋值给了la尾节点的next字段,而不是新创建节点拷贝值,相当于直接把lb的5节点挂到了la的尾部,la的尾节点自然就从NULL变成指向该5节点了。

额外注意的代码问题

你的代码里存在无效内存申请,会导致内存泄漏:

(*finNode)->next = (slink *) malloc(sizeof(MemLEN));
(*finNode)->next = (*qNode);

第一行malloc申请的内存地址,第二行直接被(*qNode)的地址覆盖,申请的内存再也无法被释放,属于冗余代码,直接删掉第一行malloc即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:00:02