19. 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。

代码

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* first=head;
        while(n--!=0)
            first=first->next;
        if(!first)
            return head->next;
        ListNode* sec=head;
        while(first->next!=NULL){
            sec=sec->next;
            first=first->next;
        }
        sec->next=sec->next->next;
        return head;
    }
};

你可能感兴趣的:(19. 删除链表的倒数第N个节点)