千家信息网

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

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,本文小编为大家详细介绍"c++如何删除倒数第k个节点",内容详细,步骤清晰,细节处理妥当,希望这篇"c++如何删除倒数第k个节点"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
千家信息网最后更新 2024年11月11日c++如何删除倒数第k个节点

本文小编为大家详细介绍"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

题目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个节点"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0