> For the complete documentation index, see [llms.txt](https://wenhaiz.gitbook.io/kx-android/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wenhaiz.gitbook.io/kx-android/computer_science/datastructure/linked_list-1/xiang-guan-suan-fa-ti-mu/delete_last_n_node.md).

# 删除倒数第n个结点

```
/**
 * 删除倒数第n个结点
 * https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
 * <p>
 * 思路：快慢指针
 */
public class DeleteLastXNode {


    /**
     * 返回删除后的链表
     *
     * @param list
     * @param n    倒数第n个
     * @return
     */
    static Node resolution(Node list, int n) {
        if (list == null || n <= 0) {
            return list;
        }

        Node slow = list;
        Node fast = list;
        int count = 0;
        while (fast != null && count < n) {
            fast = fast.next;
            count++;
        }

        if (count != n) {
            //长度不够
            return list;
        }

        //fast==null 时,头结点即为倒数第n个
        //删除头结点
        if (fast == null) {
            list = list.next;
            return list;
        }

        //fast!=null 删除链表中的结点
        //需要记录待删除结点的前驱结点
        Node pre = slow;
        //fast!=null 继续遍历
        while (fast != null) {
            fast = fast.next;
            pre = slow;
            slow = slow.next;
        }

        //删除链表中结点
        pre.next = slow.next;
        slow.next = null;
        return list;
    }


}
```
