Python | 删除链表的节点问题解决方法
问题描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.解决方案首先要知道基本的链表知识,若结构是非空有限集,有且仅有一个开始节点和一个终端节点,并且所有节点都最多只有一个直接前趋和一个直接后继。可表示为:(a1 , a2 , ……, an)线性结构表达式:(a1 , a2, ……, an)
特点是只有一个首节点和尾节点,除首尾节点外,其他节点只有一个直接前驱和一个直接后继。简言之,线性结构反映节点间的逻辑关系是一对一的。本题是对单链表的基本操作,有一些符号表示要注意n1#表示第一个节点n1.next#表示第一个节点的下个节点也就是n2#赋值操作n1.data=1n2.data=2n1.next=n2n2.next=n3解决本题主要分为两步,1.找到目标节点,遍历链表,直到head.val==val时跳出,即找到目标节点。2.修改引用,假设bef为前节点,则bef.next为后继节点,当执行bef.next=bef.next.next时,即可实现删除bef.next节点。注意,当应删除头节点head时,直接返回head.next即可。最后返回链表头部节点head即可。class Solution:def deletenode(self,head:listnode,val:int) -> listnode:if head.val==val:return head.nextbef=headwhile bef.next:if bef.next.val=val:bef.next=bef.next.nextbreakbef=bef.nextreturn bead结语删除链表的节点需要我们学习不同的知识点。在后续的学习中我们要抓住链表相关的内容进行巩固所学知识点!不足之处在于自己还没有熟练掌握这方面的知识点,而是大部分上网查找所得资料。后面要学习自己熟练掌握知识点。我们下一次准备写与《数据结构与算法》相关的内容,敬请期待!实习编辑:李欣容作者:欧洋、赵甜、巨金玲稿件来源:深度学习与文旅应用实验室(DLETA)