题解 | #删除链表的倒数第n个节点#

删除链表的倒数第n个节点

https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        //确定步长,同步遍历
        
        ListNode* beg=head;
        ListNode* end=beg;
        ListNode* pre=beg;//目标结点的前驱
        ListNode* p=nullptr;//目标结点

        while(n){
            end=end->next;
            n--;
        }
        while(end){
            pre=beg;
            beg=beg->next;
            end=end->next;
        }

        if(beg==head){
            p=head;
            head=p->next;
        }else{
            p=beg;
            pre->next=p->next;
        }

        free(p);

        return head;
    }
};

全部评论

相关推荐

04-06 11:24
已编辑
太原学院 C++
真烦好烦真烦:感觉不太对劲,这种主动加微信的一般都是坑,要小心辨别
点赞 评论 收藏
分享
05-01 22:41
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务