注意分为两种情况,一种是刚开始就删到头的情况,一种是删的不是头的情况。

/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        // write code here

        if(!head){
            return NULL;
        }
        ListNode* temp= head;
        int length=0;

        while(head){
            length++;
            head = head->next;
        }

        head = temp;

        if(0 == length-n){
            return head->next;
        }

        for(int i = 0; i<length-n;i++){


            if(i==length-n-1){
                temp->next = temp->next->next;
            }
            temp = temp->next;     
        }

        return head;

    }
};