程序设计链表改错题

程序设计链表改错题


2024年4月30日发(作者:)

程序设计链表改错题

题目:给定一个链表,删除链表的倒数第n个节点。

链表节点的定义如下:

python

复制代码

class ListNode:

def __init__(self, x):

= x

= None

示例:

输入:链表1->2->3->4->5,n = 2

输出:链表1->2->3->5

注意:给定的链表节点数大于等于n,且n为正整数。

错误的代码示例:

python

复制代码

def removeNthFromEnd(head, n):

dummy = ListNode(0) # 创建一个虚拟头节点

= head # 将虚拟头节点指向链表的头部

fast = slow = dummy # 初始化快指针和慢指针,都指向虚拟头节点

for _ in range(n): # 快指针先向前移动n步

fast =

while : # 当快指针到达链表末尾时,慢指针和快指针同时向前移动

fast =

slow =

= # 删除慢指针指向的节点

return # 返回修改后的链表的头部

上述代码中存在一个逻辑错误,当快指针到达链表末尾时,慢指针并不一定指向倒数第

n个节点。我们需要调整快指针和慢指针的移动策略,确保它们始终保持相隔n个节点

的距离。以下是修改后的代码:

python

复制代码

def removeNthFromEnd(head, n):

dummy = ListNode(0) # 创建一个虚拟头节点

= head # 将虚拟头节点指向链表的头部

fast = slow = dummy # 初始化快指针和慢指针,都指向虚拟头节点

for _ in range(n): # 快指针先向前移动n步

fast =

while : # 当快指针到达链表末尾时,慢指针继续向前移动,快指针

停止移动

slow =

fast =

= # 删除慢指针指向的节点

return # 返回修改后的链表的头部

这样,无论链表长度如何变化,快指针和慢指针始终保持相隔n个节点的距离,能够正

确删除倒数第n个节点。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714448200a2448430.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信