Skip to content

程序设计

如何删除单向链表的中间节点

要删除单向链表中间的节点,需要找到链表的中间节点,并修改前一个节点的指向,即跳过中间节点,再将中间节点从内存中释放。

以下是一个Python实现的例子:

py
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def deleteNode(head: ListNode) -> ListNode:
    # 如果链表为空或者只有一个节点,直接返回head
    if head is None or head.next is None:
        return head
    
    # 使用快慢指针找到中间节点
    slow, fast = head, head.next
    while fast is not None and fast.next is not None:
        slow = slow.next
        fast = fast.next.next
    
    # 删除中间节点
    slow.next = slow.next.next
    
    return head

在上面的实现中,我们使用了两个指针,一个指针每次走一步,另一个指针每次走两步,当快指针走到链表末尾时,慢指针就会到达链表中间,然后我们就可以删除中间节点。最后返回头节点即可。

吃好喝好 快乐地活下去