m->next可能为空指针,需要先判断是否为空,然后再执行下面的语句。修改如下:
class Solution
{
public:
ListNode* removeNthFromEnd(ListNode* head,int n)
{
ListNode* p = new ListNode(0,head);
ListNode* k = p;
ListNode* m=p;
int j=1,o=1;
while(k!=NULL)
{
k = k->next;
j++;
}
while(o<j-n+1 && m!=NULL)
{
m = m->next;
o++;
}
if(m==NULL) return head;
ListNode* delm = m->next;
if(m->next)
{
m->next = delm->next;
delete delm;
}
return head;
}
};
你这应该是想删除链表中倒数第n个节点,我之前写过一个代码,只是没有封装成类,可以参考一下: