删除聊表的第N个节点

Posted 萍2樱释

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除聊表的第N个节点相关的知识,希望对你有一定的参考价值。

此博客链接:https://www.cnblogs.com/ping2yingshi/p/12689658.html

删除链表的第N个节点(34min)

题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

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

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:

给定的 n 保证是有效的。

题解:

         思路:

                  1)先求出链表的长度。

                  2)再次循环链表,当循环到链表长度减去n的长度时,把指针的next指向next的next.

        注意:当第一次循环链表的长度时,是判断指针是不是null,而不是指针的next是不是空。

代码如下:

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        int count=0;
        ListNode p=head;
        ListNode q=head;
        while(p!=null)
        {
            p=p.next;
            count++;
        }
        
        int k=count-n;
        if(k==0)
        return head.next;
        for(int i=1;i<k;i++)
           q=q.next;
         q.next=q.next.next;
           
        
        return head;

    }
}

 

以上是关于删除聊表的第N个节点的主要内容,如果未能解决你的问题,请参考以下文章

每天AC系列:删除链表的倒数第N个节点

每天AC系列:删除链表的倒数第N个节点

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

LeetCode 19. 删除链表的倒数第N个节点

LC 删除链表的倒数第N个节点

leetcode -- 19 删除链表的倒数第N个节点