单链表查找与删除

本文介绍了单链表这种数据结构,包括如何查找和删除节点。查找操作从头节点开始遍历,直到找到目标节点或到达链表末尾。删除操作分为删除头节点和中间/尾节点,前者直接更新头节点,后者需找到前一个节点来修改指针。
摘要由CSDN通过智能技术生成

单链表是一种常见的数据结构,它由一系列的节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。在单链表中,查找和删除节点是常见的操作。

1.单链表查找:
要查找单链表中的一个节点,需要从链表的头节点开始,沿着指针依次遍历每个节点,直到找到目标节点或者到达链表的末尾(即指针为null)为止。
下面是一个查找单链表中某个节点的示例代码:

def find_node(head, target):
       current = head
       while current is not None:
           if current.data == target:
               return current
           current = current.next
       return None

在上述代码中,head代表链表的头节点,target是要查找的目标节点的值。代码中使用一个while循环来遍历链表,将当前节点的值与目标值进行比较,如果相等则返回当前节点,否则继续向下遍历。如果遍历完整个链表都没有找到目标节点,则返回None表示未找到。

2.单链表删除:
单链表删除操作通常分为两种情况:删除头节点和删除中间/尾节点。删除节点时,需要注意更新指针,使得链表的连续性不被破坏。
a. 删除头节点:
要删除单链表的头节点,只需将头节点的下一个节点设为新的头节点。
下面是一个删除单链表头节点的示例代码:

 def delete_head(head):
       if head is None:
           return None
       new_head = head.next
       head.next = None
       return new_head

在上述代码中,如果链表为空,则直接返回None。否则,将头节点的下一个节点作为新的头节点,并将原头节点的指针设为None。
b. 删除中间/尾节点:
要删除单链表的中间或尾节点,需要先找到待删除节点的前一个节点,然后将其指针指向待删除节点的下一个节点。
下面是一个删除单链表中间/尾节点的示例代码:

   def delete_node(head, target):
       if head is None:
           return None
       if head.data == target:
           return head.next

       current = head
       while current.next is not None:
           if current.next.data == target:
               current.next = current.next.next
               break
           current = current.next

       return head

在上述代码中,首先检查头节点是否就是待删除节点,如果是则将头节点的下一个节点作为新的头节点返回。否则,使用一个循环找到待删除节点的前一个节点,然后将前一个节点的指针指向待删除节点的下一个节点,并跳出循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值