题意:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummyHead=new ListNode(0); //定义虚拟头结点ListNode* fast=dummyHead; //定义快指针ListNode* slow=dummyHead; //慢指针dummyHead->next=head;while(n--){fast=fast->next;}fast=fast->next; //先让快指针移动到第n+1个节点while(fast!=NULL){slow=slow->next;fast=fast->next;} //然后快慢指针同时移动,直到快指针移动到NULL处,此时慢指针移动到了要被删除结点的上一个结点。 ListNode* tmp=slow->next;slow->next=slow->next->next;delete tmp; //删除该结点,并连接下一个结点。return dummyHead->next;