python/golang 删除链表中的元素

yizhihongxing

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日

相关文章

  • Python学习第三篇——访问列表部分元素

    Python学习第三篇——访问列表部分元素的完整攻略 当我们使用Python编程时,经常需要访问列表中的部分元素。Python提供切片和步长操作来实现这个功能。本文将为您详细讲解如何访问列表部分元素,包括切片和步长操作,并提供两个示例说明。 切片操作 切片操作是指从列表中获取一部分元素的操作。切片操作使用[start:end]的形式,其中start表示起始位…

    other 2023年5月6日
    00
  • vue2.0 兄弟组件(平级)通讯的实现代码

    Vue 2.0 兄弟组件(平级)通讯的实现代码攻略 在 Vue 2.0 中,兄弟组件之间的通讯可以通过共享一个父组件的数据来实现。下面是实现兄弟组件通讯的完整攻略,包含两个示例说明。 步骤一:创建父组件 首先,我们需要创建一个父组件,用于承载兄弟组件并提供数据通讯的功能。在父组件中,我们可以定义一个数据属性,然后将它传递给两个兄弟组件。 <templa…

    other 2023年8月6日
    00
  • DOS 概述及入门(dos基本介绍)

    DOS 概述及入门(dos基本介绍) 什么是 DOS DOS(Disk Operating System,磁盘操作系统)是操作计算机硬盘的操作系统。它是早期计算机用户最熟悉的操作系统之一。DOS 最初被开发用于 IBM 的个人计算机(PC)上,如今 DOS 系统已经被微软公司所抛弃,不再开发。 如何进入 DOS 首先需要进入计算机的 DOS 模式,只需要按下…

    other 2023年6月27日
    00
  • 22端口通的 ssh拒绝连接

    简介 SSH(Secure Shell)是一种加密的网络协议,用于在网络上安全地传输数据。当我们尝试使用SSH连接到远程服务器时,有时会遇到“22端口通的ssh拒绝连接”的错误。在本攻略中,我们将介绍如何解决“22端口通的ssh拒绝连接”的问题。 步骤 以下是解决“22端口通的ssh拒绝连接”的问题的步骤。 步骤1:检查SSH服务是否正在运行 首先我们需要检…

    other 2023年5月6日
    00
  • AutoCAD 2019已经发布了 AutoCAD 2019下载地址及新功能介绍(附序列号)

    AutoCAD 2019发布攻略 1. AutoCAD 2019简介 AutoCAD 2019是一款功能强大的计算机辅助设计(CAD)软件,它提供了广泛的设计工具和功能,用于创建和编辑2D和3D模型。AutoCAD 2019具有许多新功能和改进,使其成为设计师和工程师的首选工具。 2. AutoCAD 2019新功能介绍 以下是AutoCAD 2019的一些…

    other 2023年8月4日
    00
  • js操作剪切板

    js操作剪切板 在现代Web开发中,常常需要通过复制、粘贴剪切板内容来提升用户体验。JavaScript提供了一种简单的方法来访问浏览器剪贴板并执行相关操作。 判断浏览器是否支持操作剪贴板 在进行如下操作之前,我们需要明确当前浏览器是否支持剪贴板操作。这里我们可以通过 document.queryCommandSupported()方法来判断某个指定命令是否…

    其他 2023年3月28日
    00
  • Springboot公共字段填充及ThreadLocal模块改进方案

    下面是关于「SpringBoot公共字段填充及ThreadLocal模块改进方案」的详细攻略。 背景 在大型的企业级应用系统中,通常存在一些共用的字段,例如创建时间、修改时间、创建人、修改人等。不同的业务功能模块经常需要使用这些共用字段。而且在实际开发过程中,由于多线程的并发访问,很容易导致共用字段的值不一致问题。而 ThreadLocal 可以解决这个问题…

    other 2023年6月25日
    00
  • js类式继承的具体实现方法

    让我来详细讲解 “JS类式继承的具体实现方法” 的完整攻略。 什么是类式继承 类式继承是 JavaScript 中一种常用的面向对象编程模式,通过创建一个类(也就是构造函数)作为父对象,然后在子对象中通过调用父对象的构造函数,实现对父对象属性和方法的继承。 具体实现方法 定义父类 我们首先要定义一个父类,作为后面子类对象的模板。父类可能需要有一些属性和方法,…

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