题目描述
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
题解
使用双指针,一个快,一个慢,考虑删除头节点,和节点数为1时即可
ListNode* removeNthFromEnd(ListNode* head, int n)
{
ListNode *pre = head;
ListNode *index = head, *del = head;
int cnt = n;
while (n > 1 && index !=NULL)
{
index = index->next;
n--;
}
if(index == NULL)
return NULL;
while (index->next != NULL)
{
pre = del;
del = del->next;
index = index->next;
}
if(del == head)
return head->next;
if(pre->next = NULL)
return NULL;
pre->next = del->next;
delete del;
return head;
}