python怎么删除链表的倒数第N个节点
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本文小编为大家详细介绍"python怎么删除链表的倒数第N个节点",内容详细,步骤清晰,细节处理妥当,希望这篇"python怎么删除链表的倒数第N个节点"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2025年12月02日python怎么删除链表的倒数第N个节点
本文小编为大家详细介绍"python怎么删除链表的倒数第N个节点",内容详细,步骤清晰,细节处理妥当,希望这篇"python怎么删除链表的倒数第N个节点"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
【题目】
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?【思路】
解法一:遍历链表,得到链表长度N。那么删除倒数第n个节点,即为删除第N - n个节点。找到第N - n -1个节点,记为p,q = p.next, p.next=p.next.next, del p(记得清除内存)。
唯一的问题是:如何删除第1个元素,需要单独判断?可以不用这么麻烦:增加一个无意义的头结点,所有的删除逻辑都变成一致的了!
解法二:使用两个指针first和second遍历链表,首先,first指针前进n步,second指针不变;紧接着,first指针和second指针同时前进,直到first.next为None。此时,second指针指向的是倒数第n+1个节点,second.next = second.next.next同时删除无用内存即可。(删除第1个元素的代码逻辑与其它元素的不一样,解决方法参考解法一的说明。)
【代码】
python版本
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
# 增加空的头结点,使得逻辑一致
node = ListNode(val=0, next=head)
head = node
# 找到第n-1个节点
count = 0
p = head
while count < n:
count += 1
p = p.next
# 找到倒数第n+1个节点
q = head
while p.next:
p = p.next
q = q.next
# 删除倒数第n个节点
r = q.next
q.next = q.next.next
del r
return head.next读到这里,这篇"python怎么删除链表的倒数第N个节点"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
节点
指针
元素
文章
结点
解法
逻辑
一致
代码
内存
内容
同时
思路
妥当
有效
不用
两个
指向
新知
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
全国网络安全专业就业方向
软件开发工程师熬夜吗
数据库查询文本字段时中间有空格
ad驱动软件开发
测试asp数据库结果集
dna数据库信息收集
sap的数据库的REP什么意思
蓝盾网络安全产品怎么样
软件开发和使用合同范本
职中网络技术三加二好不好
网络安全 事件分类 分级
lenovo服务器管理口地址
成安企业万词霸屏需要服务器吗
ssh 访问国外服务器
数据库number的长度精度
2020秋网络安全知识竞赛
幻塔无法连接服务器什么原因
在线游戏服务器编程
火车头v9发布数据库
车牌摇号软件开发
个人信息管理系统sql数据库
速达服务器连接
安薪上海互联网科技有限公司
中兴数据库国内案例
宿迁云服务器厂家直供
入侵crm数据库
阿里云查看数据库密码
生产服务器操作规范
银行软件开发的笔试
天津的网络技术公司怎么样