/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
//定义虚拟头指针
typedef struct ListNode* ListNode;
ListNode shead = (ListNode*)malloc(sizeof(struct ListNode));;
shead->next = head;
//定义快慢指针
ListNode slow = shead;
ListNode fast = head;
while(n-- && fast != NULL)
fast = fast->next;
while(fast != NULL){
slow = slow->next;
fast = fast->next;
}
slow->next = slow->next->next;
head = shead->next;
free(shead);
return head;
}