这题不难,就是要细心,临界考虑清楚。还有如果删除倒数第N个结点是第一个节点,要分类。
struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
if(head==NULL || head->next==NULL)return NULL;
int count=0,j;
struct ListNode *p,*q;
p=head;
q=head;
while(p!=NULL){
count++;
p=p->next;
}
if(count==n){
head=head->next;
}
else{
for(j=0;j<count;j++){
if(j==count-n-1){
q->next=q->next->next;
break;
}
else{
q=q->next;
}
}
}
return head;
}