问题描述:
给定一个链表删除链表中倒数第N个节点,返回链表的头结点。链表中的节点个数大于等于N。
实现思路:
首先, 利用FOR循环得到链表的总节点数,count从零开始记数;链表中的倒数第N个节点,就是该链表的第N-count+2个节点;如果删除的是第一个节点就返回head->next。如果不是第一个节点,利用For循环先找到第N-count+1个节点P , 然后p->next=p->next->next,这样就删除了该链表的倒数第N个节点。
实现代码:
ListNode *removeNthFromEnd(ListNode *head, int n) {
if (head == NULL) {
return NULL;
}
int count = 0;
ListNode *p, *q;
for (p= head; p->next!= NULL; count++)
{ p= p->next;}
int i= 1;
if(count-n+1==0)
return head->next;
for ( p= head; i< count-n+1; i++)
{ p= p->next;}
q= p->next;
p->next= q->next;
delete q;
return head;
}
感想:
一开始没有考虑到删除第一个节点的情况,直接return head,无法实现删除。