• 技术文章 >后端开发 >Golang

    go语言如何删除链表节点

    王林王林2021-01-06 13:45:28原创1244

    go语言删除链表节点的方法:首先将下一个节点的值移动到当前删除节点;然后更改当前节点的Next即可,如【node.Next = node.Next.Next】。

    本文操作环境:windows10系统、GO 1.11.2、thinkpad t480电脑。

    具体方法:

    最优解:

    把下一个节点的值移动到当前删除节点,然后更改当前节点的Next

    node.Val = node.Next.Val
    node.Next = node.Next.Next

    其他方法:

    p.next = p.next.next即可达到删除的目的

    /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    func deleteNode(head *ListNode, val int) *ListNode {
        if head.Val == val{
            return head.Next
        }
    
        pre:=head   
        for head.Next.Val != val{
            head = head.Next
        }
        head.Next = head.Next.Next
        return pre
    }

    题目:

    删除链表中的节点
    请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

    现有一个链表 – head = [4,5,1,9],它可以表示为:

    22b5606a0008e99dfe328fd39c90ac7.png

    示例 1:

    输入: head = [4,5,1,9], node = 5
    输出: [4,1,9]
    解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
    示例 2:

    输入: head = [4,5,1,9], node = 1
    输出: [4,5,9]
    解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

    Code

    依然注意,是达到删除的目的

    /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    func deleteNode(node *ListNode) {
    	for node.Next.Next != nil {
    		node.Val = node.Next.Val
    		node = node.Next
    	}
    	node.Val = node.Next.Val
    	node.Next = nil
    }

    相关推荐:golang教程

    以上就是go语言如何删除链表节点的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:go语言 链表 节点
    上一篇:go语言如何升级版本 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • jquery怎么遍历节点• jquery怎么判断节点是否存在?• jquery怎么获取父亲节点• uniapp如何获取dom节点
    1/1

    PHP中文网