删除链表倒数第N个节点
Leetcode(19):
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
分析:
首要目标就是找到第N个节点的前一个节点,因为只有通过这个节点(cur)才可进行对第N个节点进行删除操作,即cur->next=cur->next->next;但是要是找到第N个节点不是很容易,可以使用便捷方法——快慢指针,使用时要考虑一点如何找到第N个节点的前一个节点,即将N+1,这样就可实现。
代码:
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode*dummyHead=new ListNode(0);dummyHead->next=head;ListNode*fast=dummyHead;ListNode*slow=dummyHead;n++;//进行+1操作,找到前一节点while(n--&&fast!=nullptr){fast=fast->next;}while(fast!=nullptr){fast=fast->next;slow=slow->next;}slow->next=slow->next->next;return dummyHead->next;}
};