给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
思路:通过双指针方法
struct ListNode* removeNthFromEnd(struct ListNode* head, int n)
{
struct ListNode* dummy=malloc(sizeof(struct ListNode));
dummy->val=0;
dummy->next=head;
struct ListNode*first=head;
struct ListNode*second=dummy;
for(int i=0;i<n;++i)//让fir先走n步
{
first=first->next;
}
while(first)
{
first=first->next;
second=second->next;
}
second->next=second->next->next;
struct ListNode*ans=dummy->next;
free(dummy);
return ans;
}