Python实现链表尾节点删除后仍输出完整链表的问题求助
链表尾节点删除失败?问题出在这!
嘿,我一眼就看出问题所在了!你现在的代码只是把指向尾节点的临时变量temp设为None,但这根本没改变链表本身的结构呀!
为什么你的代码不生效?
当你在deleteLastNode里执行这段循环时:
while temp.next != None: temp = temp.next
temp最终指向的是值为30的尾节点。这时候你执行temp = None,只是让这个局部变量temp不再引用那个尾节点,但链表中倒数第二个节点(值为20的节点)的next指针仍然指向30的节点。链表的结构完全没被修改,所以打印的时候自然还会输出完整的链表。
正确的尾节点删除方式
要真正删除尾节点,你需要找到倒数第二个节点,然后把它的next设为None,这样才能切断它和尾节点的联系。同时还要考虑两种特殊情况:
- 空链表(head为None):直接返回None;
- 链表只有一个节点:删除后返回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
相关产品推荐
相关产品推荐

