单链表查找与删除

举报
吃瓜面包君 发表于 2023/07/27 22:36:45 2023/07/27
【摘要】 单链表是一种常见的数据结构,它由一系列的节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。在单链表中,查找和删除节点是常见的操作。1.单链表查找:要查找单链表中的一个节点,需要从链表的头节点开始,沿着指针依次遍历每个节点,直到找到目标节点或者到达链表的末尾(即指针为null)为止。下面是一个查找单链表中某个节点的示例代码:def find_node(head, target): ...

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

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。