当需要对链表进行操作又需要返回头节点时,又可能被更改的节点正是头节点
解决方法:
让一个指针事先指向头节点,然后从该指针开始操作就好了
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
if(head==NULL)return NULL;
ListNode*pstart=new ListNode(0,head);
//双指针
ListNode*pfast=pstart;
ListNode*pslow=pstart;
for(int i=0;i<n;i++)
{
pfast=pfast->next;
}
while(pfast->next!=NULL)
{
pfast=pfast->next;
pslow=pslow->next;
}
pslow->next=pslow->next->next;
return pstart->next;
}
};