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

Python中如何让两个变量指向同一引用以留存链表头节点

核心问题分析

你的代码存在两个核心错误:

  • 初始状态下head被赋值为None后,全程没有被重新赋值,最终自然返回空值
  • 新建节点后没有和之前的链表节点做关联,直接将tail指向新节点,导致链表前后断裂

正确实现代码

首先给出通用Node类定义:

class Node:
    def __init__(self, val, next=None):
        self.val = val
        self.next = next

从数组生成链表的完整逻辑:

def arr_to_linked_list(arr):
    head = tail = None
    for item in arr:
        new_node = Node(val=item)
        if not head:
            # 首个节点同时赋值给head和tail,留存头节点引用
            head = tail = new_node
        else:
            # 新节点挂到当前链表末尾
            tail.next = new_node
            # tail指针移动到新的末尾节点
            tail = new_node
    return head

逻辑说明

  • 第一次遍历到数组元素时,判断head为空,将新建的第一个节点同时赋值给head和tail,此时head就固定指向了链表的头节点,后续不会再修改head的指向
  • 后续遍历过程中,只需要将新节点赋值给当前tail的next属性,再把tail移动到新节点即可,全程不改动head的指向,最终返回的head就是完整链表的头节点

你之前尝试用空列表、单例作为初始值的写法没有意义,核心问题是没有处理首个节点给head赋值的逻辑,直接给tail重新赋值新对象会直接切断tail和初始head指向对象的关联,自然无法得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:42:03