题意:Given a linked list, remove the nth node from the end of list and return its head.Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.
分析:链表操作。
AC代码:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* p = head, *q = head;
int count = 0;
while(p != NULL){
if(count == n){
q = head;
break;
}
p = p->next;
count ++;
}
if(p == NULL && count == n){
return head->next;
}
while(p->next != NULL){
p = p->next;
q = q->next;
}
ListNode* del = q->next;
q->next = del->next;
return head;
}
问:其实一直不明白这个删除需要free内存空间嘛?我的删除是不是有问题?