力扣:19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点
在这里插入图片描述

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

//快慢指针算法
struct ListNode* removeNthFromEnd(struct ListNode* head, int n)
{
    
    
    struct ListNode* shead=(struct ListNode*)malloc(sizeof(struct ListNode));
    shead->next=head;
    struct ListNode* fast=shead;
    struct ListNode* slow=shead;
    n++;//向前走n步
    while(n-- && fast!=NULL)
    {
    
    
        fast=fast->next;
    }
    //快指针走完 慢指针与快指针 同时走
    while(fast!=NULL)
    {
    
    
        fast=fast->next;
        slow=slow->next;
    }
    slow->next=slow->next->next;
    return shead->next;
}

猜你喜欢

转载自blog.csdn.net/congfen214/article/details/129543058