llllmz

导航

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

相当于删除正数第n个节点

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        if(!head) return head;
        int listLength = 0;
        ListNode* temp = head;
        while(temp){
            temp = temp->next;
            ++listLength;
        }
        int length = listLength - n + 1;    
        if(length == 1){
            ListNode* temp = head;
            head = head->next;
            delete temp;
            return head;
        }
        ListNode* pre = new ListNode(0, head);
        temp = head;
        while(length > 1){
            pre = temp;
            temp = temp->next;
            --length;
        }
        pre->next = temp->next;
        delete temp;
        return head;
    }
};

 

posted on 2024-09-27 20:45  神奇的萝卜丝  阅读(15)  评论(0)    收藏  举报