给定一个链表,删除链表的倒数第n个节点并返回链表的头指针
public ListNode removeNthFromEnd (ListNode head, int n) {
//如果n小于等于0直接输出头结点吧
if(n<=0){
return head;
}
//接下来的n全都是大于0的值
//考虑到可能删除头结点所以搞一个头结点还之前的一个,接下来的操作就方便多了,
//该怎么删除怎么删除,因为不可能删除咱们新添的节点
ListNode node=new ListNode(0);
node.next=head;
ListNode first=node;
ListNode second=node;
for(int i=0;i<n;i++){
second=second.next;
//如果这个n比链表长度还长,直接输出头结点吧
//这个操作判断完就在也不用判断n了,能通过的都是合法数值
if(second==null){
return head;
}
}
//下面使first到达待删除节点之前一个节点,second到达尾结点
while(second.next!=null){
first=first.next;
second=second.next;
}
first.next=first.next.next;
return node.next;
}