当前位置:   article > 正文

面试:删除链表的节点 go语言实现_go 会回收删除的链表节点吗

go 会回收删除的链表节点吗

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

注意:此题对比原题有改动

示例 1:

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

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

说明:

题目保证链表中节点的值互不相同
若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点

这题的难度定义为简单,但我觉得如果对于链表题目并不熟练的人来说,想到题解还是有一点难度的。

我一开始以为很简单,因为知道链表的删除操作是怎样的,关键点在于获取需要删除的节点的前一个节点,剩余的问题就迎刃而解了,然而做起来还是有点费脑子的。

接下来就跟大家说一下我的题解及解题思路。

特此说明,我只想到了第一种解法,其他两种是理解大神们的题解

题解一:假头指针+双指针

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(head *ListNode, val int) *ListNode {
   
    if head == nil {
   
        return head
    }
    
    newHead := 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/850473
推荐阅读
相关标签
  

闽ICP备14008679号