给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
我的代码
struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
int i=0,j,k;
struct ListNode *t1,*p,*L,*t2;
t1=head;
t2=head;
L=t2;
while(t1!=NULL){
i++;
t1=t1->next;
}
j=i-n;
if(n1&&head->nextNULL){
L=NULL;
}else if(n==i){
L=L->next;
}else{
for(k=0;k<j-1;k++){
t2=t2->next;
}
t2->next=t2->next->next;
}
return L;
}