删除链表倒数第N个节点

Leetcode(19):

给你一个链表,删除链表的倒数第 n个结点,并且返回链表的头结点。

分析:

首要目标就是找到第N个节点的前一个节点,因为只有通过这个节点(cur)才可进行对第N个节点进行删除操作,即cur->next=cur->next->next;但是要是找到第N个节点不是很容易,可以使用便捷方法------快慢指针,使用时要考虑一点如何找到第N个节点的前一个节点,即将N+1,这样就可实现。

代码:

cpp 复制代码
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;
    }
};
相关推荐
磊 子12 分钟前
笔试面试中关于链表相关的题目
数据结构·链表·面试·职场和发展
Genevieve_xiao7 小时前
【数据结构】【xjtuse】八股文单元小测
数据结构·算法
想唱rap9 小时前
Linux下进程的状态和优先级
linux·运维·服务器·开发语言·数据结构·算法
Croa-vo9 小时前
逆袭Akuna Quant!美硕秋招亲历,从网申到拿offer全攻略
数据结构·经验分享·算法·面试·职场和发展
vir0211 小时前
交换瓶子(贪心)
数据结构·算法
墨染点香12 小时前
LeetCode 刷题【160. 相交链表】
算法·leetcode·链表
YoungHong199212 小时前
面试经典150题[066]:分隔链表(LeetCode 86)
leetcode·链表·面试
9523612 小时前
数据结构-二叉树
java·数据结构·学习
HUTAC12 小时前
重要排序算法(更新ing)
数据结构·算法
冉佳驹12 小时前
数据结构 ——— 八大排序算法的思想及其实现
c语言·数据结构·排序算法·归并排序·希尔排序·快速排序·计数排序