leetcode.19删除链表的倒第N个节点(C语言)

有思路就一遍过了。
采用双指针的方法,先让q指针向前走n个节点,然后在让p指针和q指针同时向前移动,知道q指针指向NULL,此时p指针所指的节点就是我们要删除的倒数第n个节点了。

struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
    struct ListNode *p=head,*q=head,*r=head;
    for(int i=0;i<n;i++) q = q->next;
    if(q == NULL){
        head = head->next;
    }
    else{
        while(q != NULL){
            r = p;
            p = p->next;
            q = q->next;
        }
        r->next = p->next;
    }
    free(p);
    return head;
}

在这里插入图片描述

发布了6 篇原创文章 · 获赞 0 · 访问量 111

猜你喜欢

转载自blog.csdn.net/weixin_38072112/article/details/104087062
今日推荐