温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

c++如何删除倒数第k个节点

发布时间:2022-03-17 16:07:22 来源:亿速云 阅读:123 作者:iii 栏目:大数据

本文小编为大家详细介绍“c++如何删除倒数第k个节点”,内容详细,步骤清晰,细节处理妥当,希望这篇“c++如何删除倒数第k个节点”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

算法:

该类型的题目,核心点在于如何找到倒数第k个节点的位置,典型的操作办法是,双指针的方法。

第一个指针先偏移k个位置,第二个指针才开始执行然后两个指针同时往后移动,第一个指针到链表尾部,第一个指针就是倒数第k个位置

题目 1 :链表中倒数第k个节点

代码实现:

// 算法:这是典型的双指针的做法,// 第一个指针先偏移k个位置,第二个指针才开始执行// 然后两个指针同时往后移动,第一个指针到链表尾部,第一个指针就是倒数第k个位置/** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */func getKthFromEnd(head *ListNode, k int) *ListNode {    c := head    for i:=0;i<k;i++ {        head = head.Next    }    for head != nil {        c = c.Next        head = head.Next    }    return c}

题目2: 删除倒数第k个节点

代码实现:

// 算法:该问题是题目1的变形题目,// 采用题目1的算法找到倒数第k个节点的前序节点,然后删除倒数第k个节点/** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */func removeNthFromEnd(head *ListNode, n int) *ListNode {    head1 := head    head2 := head    for i:=n; i>0; i-- {        head2 = head2.Next    }    if head2 == nil {        head = head.Next        return head    }    for {        if head2.Next == nil {            break        }        head2 = head2.Next        head1 = head1.Next     }    // 获取到 倒数第n-1位置的节点    head1.Next = head1.Next.Next    return head}

读到这里,这篇“c++如何删除倒数第k个节点”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI