题目描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 题目分析:该题首先得确定所给链表是否为空以及节点总数,然后确定需要删除的节点是正数第几个,然后再进行删除操作。同时对于特殊长度或特殊位置的节点需要进行单独处理,比如链表为空,或者长度为1,删除第一个或最后一个节点等。代码展示: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { int j;//删除的是正数第j个结点 int k = 1; int i = 0;//统计结点总数 if(head == null) {return head;} ListNode list1 = head; while(list1 != null) { i++; list1 = list1.next; } if(n == i) {head = head.next; return head;} if(i == 1) {return null;} j = i - n + 1; list1 = head; while(k < j - 1) { list1 = list1.next; k ++; } if(n == 1) { list1.next = null; return head; } list1.next = list1.next.next; return head; } }