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

Python实现链表尾节点删除后仍输出完整链表的问题求助

链表尾节点删除失败?问题出在这!

嘿,我一眼就看出问题所在了!你现在的代码只是把指向尾节点的临时变量temp设为None,但这根本没改变链表本身的结构呀!

为什么你的代码不生效?

当你在deleteLastNode里执行这段循环时:

while temp.next != None:
    temp = temp.next

temp最终指向的是值为30的尾节点。这时候你执行temp = None,只是让这个局部变量temp不再引用那个尾节点,但链表中倒数第二个节点(值为20的节点)的next指针仍然指向30的节点。链表的结构完全没被修改,所以打印的时候自然还会输出完整的链表。

正确的尾节点删除方式

要真正删除尾节点,你需要找到倒数第二个节点,然后把它的next设为None,这样才能切断它和尾节点的联系。同时还要考虑两种特殊情况:

  1. 空链表(head为None):直接返回None;
  2. 链表只有一个节点:删除后返回None。

修正后的deleteLastNode函数如下:

def deleteLastNode(head):
    if head == None:
        return None
    # 链表只有一个节点的情况
    if head.next == None:
        return None
    temp = head
    # 遍历到倒数第二个节点
    while temp.next.next != None:
        temp = temp.next
    # 切断和尾节点的联系
    temp.next = None
    return head

测试验证

运行你的驱动代码:

head = Node(10)
head.next = Node(20)
head.next.next = Node(30)
head = deleteLastNode(head)
printList(head)

现在输出会是:10 20,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:43:11