题目:
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
思路:
删除节点A==让节点A的上一个节点 指向节点A的下一个节点
考虑到要删除的节点可能是头节点,我们新建一个ListNode节点beforehead,beforehead.next指向头节点head,以防找不到头节点。
代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteNode(self, head: ListNode, val: int) -> ListNode:
p=beforehead=ListNode(0)#新建结点beforehead,p是遍历指针
beforehead.next=head
while p:
if p.next.val==val:#p.next结点就是要删除的结点
p.next=p.next.next#让p的下一个指针,跳过p.next,直接指向p.next.next,实现删除结点的效果
return beforehead.next#返回头结点
else:#如果当前结点非 要删除结点,继续遍历
p=p.next