python/golang 删除链表中的元素

Python删除链表中的元素

删除链表中的元素需要先遍历链表,找到需要删除的元素所在节点的前一个节点,然后通过修改指针来删除节点。

以下是删除链表中元素的Python代码示例:

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

class Solution:
    def removeElement(self, head: ListNode, val: int) -> ListNode:
        dummy = ListNode(0)  # 创建一个哑节点
        dummy.next = head     # 哑节点指向原链表头结点
        prev, curr = dummy, head   # 初始化前序节点和当前节点
        while curr:     # 遍历整个链表
            if curr.val == val:
                prev.next = curr.next   # 删除当前节点
            else:
                prev = curr   # 更新前序节点
            curr = curr.next  # 移动当前节点到下一个节点
        return dummy.next  # 返回新链表头结点

示例

例如,对于链表 1 -> 2 -> 3 -> 4 -> 5,想要删除值为3的节点,可以调用该函数如下:

node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5

s = Solution()
result = s.removeElement(node1, 3)
while result:
    print(result.val, end=" ")
    result = result.next

输出为:1 2 4 5

Golang删除链表中的元素

删除链表中元素的过程与Python类似,同样需要遍历链表,找到需要删除的元素所在节点的前一个节点,然后通过修改指针来删除节点。

以下是删除链表中元素的Golang代码示例:

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func removeElements(head *ListNode, val int) *ListNode {
    dummy := &ListNode{0, head}   // 创建一个哑节点
    prev, curr := dummy, head     // 初始化前序节点和当前节点
    for curr != nil {     // 遍历整个链表
        if curr.Val == val {
            prev.Next = curr.Next   // 删除当前节点
        } else {
            prev = curr   // 更新前序节点
        }
        curr = curr.Next  // 移动当前节点到下一个节点
    }
    return dummy.Next  // 返回新链表头结点
}

示例

例如,对于链表 1 -> 2 -> 3 -> 4 -> 5,想要删除值为3的节点,可以调用该函数如下:

node1 := &ListNode{1, nil}
node2 := &ListNode{2, nil}
node3 := &ListNode{3, nil}
node4 := &ListNode{4, nil}
node5 := &ListNode{5, nil}
node1.Next = node2
node2.Next = node3
node3.Next = node4
node4.Next = node5

result := removeElements(node1, 3)
for result != nil {
    fmt.Printf("%d ", result.Val)
    result = result.Next
}

输出为:1 2 4 5

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python/golang 删除链表中的元素 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 深入探究Mysql模糊查询是否区分大小写

    深入探究Mysql模糊查询是否区分大小写 MySQL的模糊查询通常用于在数据库中查找与指定模式匹配的数据。在进行模糊查询时,有时候需要考虑是否区分大小写。下面将详细讲解如何在MySQL中进行区分大小写的模糊查询。 1. 确定数据库的字符集和排序规则 在进行模糊查询之前,首先需要确定数据库的字符集和排序规则。MySQL的字符集和排序规则决定了字符串比较的方式,…

    other 2023年8月17日
    00
  • HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例

    Html5和CSS3网页加载进度条可以通过使用Javascript编写代码来实现。主要步骤如下: 在HTML文件的head标签中引入CSS文件和JS文件,如下: <head> <link rel="stylesheet" href="style.css"> <script src=&quo…

    other 2023年6月25日
    00
  • 批处理入门手册之批处理常用DOS命令篇(md、rd、ren、move)

    批处理入门手册之批处理常用DOS命令篇包含了md、rd、ren、move四个常用的DOS命令,本文将对这四个命令逐一进行详细讲解。 md命令 md是创建一个新目录的命令,使用方式如下: md [drive:]path 其中,drive:表示创建目录的驱动器,path表示创建的目录路径。如果drive:没有指定,则默认在当前驱动器下创建目录。 例如,我们要在C…

    other 2023年6月26日
    00
  • css透明设置

    概述 在CSS中,我们可以使用opacity属性来设置元素的透明度。本文将为您提供一份完整攻略,介绍如何使用opacity属性来设置元素的透明度,并提供两个示例说明。 使用opacity属性设置元素透明度 步骤1:使用opacity属性 opacity属性可以设置元素的透明度,取值范围为0到1之间的数字,其中0表示完全透明,1表示完全不透明。可以使用以下代码…

    other 2023年5月5日
    00
  • 老生常谈javascript变量的命名规范和注释

    JavaScript变量的命名规范和注释攻略 在JavaScript中,良好的变量命名规范和注释是编写可读性强且易于维护的代码的关键。本攻略将详细介绍JavaScript变量的命名规范和注释的最佳实践。 变量命名规范 良好的变量命名规范可以提高代码的可读性和可维护性。以下是一些常见的变量命名规范: 使用有意义的名称:变量名应该能够清楚地描述其用途和含义。避免…

    other 2023年8月8日
    00
  • windows、linux下打包Python3程序详细方法

    这里是“windows、linux下打包Python3程序详细方法”的完整攻略。 1. 概述 在Python3中,有两个常用的工具可以将Python脚本打包成可执行程序:py2exe和PyInstaller。下面将分别讲解在windows和linux环境下使用这两个工具来打包Python程序的详细方法。 2. 在windows下使用py2exe打包Pytho…

    other 2023年6月26日
    00
  • wifi无法获取ip地址的解决方法

    WiFi无法获取IP地址的解决方法攻略 1. 检查WiFi设置 首先,确保你的设备已正确连接到WiFi网络。如果你无法获取IP地址,可能是由于以下原因之一: WiFi密码错误:检查你输入的WiFi密码是否正确。如果密码错误,设备将无法连接到网络并获取IP地址。重新输入正确的密码,然后尝试重新连接。 DHCP设置问题:动态主机配置协议(DHCP)是一种自动分配…

    other 2023年7月30日
    00
  • Python 自制简单版《我的世界》的详细过程

    下面是详细讲解“Python 自制简单版《我的世界》的详细过程”的完整攻略。 1. 确定实现方式 我们可以通过 Python 的 Pygame 库来实现简单版《我的世界》的开发。Pygame 是 Python 的一种视觉化实现库,我们可以使用它来实现图形界面、音效、输入等功能。 2. 安装 Pygame 库 由于 Pygame 不是 Python 默认的库,…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部