zoukankan      html  css  js  c++  java
  • 2021-02-09:如何删除一个链表的倒数第n个元素?

    2021-02-09:如何删除一个链表的倒数第n个元素?

    福哥答案2021-02-09:

    1.创建虚拟头元素,虚拟头元素的Next指针指向头元素。
    2.根据快慢指针求倒数第n+1个元素,假设这个元素是slow。
    3.设置元素slow的Next指针。slow.Next=slow.Next.Next。
    4.返回虚拟头元素的Next指针。

    代码用golang编写,代码如下:

    package main
    
    import "fmt"
    
    type ListNode struct {
        Val  int
        Next *ListNode
    }
    
    func main() {
        head := &ListNode{}
        head.Val = 1
    
        head.Next = &ListNode{}
        head.Next.Val = 2
    
        head.Next.Next = &ListNode{}
        head.Next.Next.Val = 3
    
        head.Next.Next.Next = &ListNode{}
        head.Next.Next.Next.Val = 4
    
        ret := head
        for ret != nil {
            fmt.Print(ret.Val, " ")
            ret = ret.Next
        }
    
        fmt.Println("
    -------")
        k := 4
        fmt.Println("删除倒数第", k, "个元素后:")
    
        ret = DeleteNode(head, k)
        for ret != nil {
            fmt.Print(ret.Val, " ")
            ret = ret.Next
        }
    }
    func DeleteNode(head *ListNode, k int) *ListNode {
        preHead := &ListNode{}
        preHead.Next = head
    
        fast := preHead
        slow := preHead
    
        k++
        for k > 0 {
            fast = fast.Next
            k--
        }
    
        for fast != nil {
            fast = fast.Next
            slow = slow.Next
        }
    
        slow.Next = slow.Next.Next
    
        return preHead.Next
    }
    

      

    执行结果如下:


    ***
    [评论](https://user.qzone.qq.com/3182319461/blog/1612827291)

  • 相关阅读:
    Springmvc
    Mybatis关联关系
    Mybatis整合ehcache 和 redis
    Mybatis与spring集成
    MyBatis动态sql和分页
    MyBatis入门
    Vue模板语法(二)
    Vue模板语法(一)
    Spring---SSH整合(二)
    Spring---SSH整合
  • 原文地址:https://www.cnblogs.com/waitmoon/p/14394345.html
Copyright © 2011-2022 走看看