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

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

http://www.nowcoder.com/questionTerminal/f95dcdafbde44b22a6d741baf71653f6

删除链表的倒数第n个节点
首先,我们要清楚链表的长度length,这样的话,要删除倒数第n个节点的话,就是删除正数的第(length - n)个节点(从 0 开始遍历链表)(当删除倒数第length的节点时例外,因为我们遍历链表的时候从 0 开始,所以这个时候我们需要单独将条件提出)。
其次,当我们遍历到了要删除的节点的前一位的时候,我们只需要让其的 next 指向其 next.next,这样的话就可以删除该节点。
最后,当我们遍历链表的时候,需要有一个指针指向该链表的首部,这样就不会丢失链表遍历位置之前的元素。

    public ListNode removeNthFromEnd (ListNode head, int n) {
        // write code here
        ListNode node = head;
        ListNode result = head;
        ListNode begin = result;
        int size = 0;
        while (node != null) {
            size ++;
            node = node.next;
        }
        size = size - n;
        if (size == 0) {
            result = result.next;
            return result;
        }
        for (int i = 0; i < size-1; i ++) {
            result = result.next;
        }
        result.next = result.next.next;
        return begin;
    }
全部评论
请问一下为什么是 while (node != null),而不是node.next!=null
点赞 回复 分享
发布于 2021-08-11 16:00

相关推荐

不愿透露姓名的神秘牛友
02-25 17:03
点赞 评论 收藏
分享
评论
12
1
分享

创作者周榜

更多
牛客网
牛客企业服务