go语言如何删除链表节点


本文摘自php中文网,作者V,侵删。

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

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

具体方法:

最优解:

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

1

2

node.Val = node.Next.Val

node.Next = node.Next.Next

其他方法:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

/**

 * 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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

/**

 * 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语言如何删除链表节点的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Go语言中函数与方法介绍

Go语言循环语句

Go语言怎么将string转int类型

Go语言编译快吗

Go语言int64如何转string

Go语言中自定义包的方法

Go语言不适合新手学习吗

Go语言适合用在哪方面

Go语言中while是关键字吗

Go语言用什么开发工具?

更多相关阅读请进入《Go语言》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...