解决方式:
我们使用的是快慢指针的方式
我们假设现在有5个节点,要查找倒数第2个节点

先用快指针从头节点走2个节点

之后我们使用慢指针指向头节点

然后以快指针为判断条件走到最后的节点,那最后慢指针的next节点就是要删除的节点

代码如下
def delete_last_n_node(self, n):
"""删除链表中倒数第N个节点.
主体思路:
设置快、慢两个指针,快指针先行,慢指针不动;当快指针跨了N步以后,快、慢指针同时往链表尾部移动,
当快指针到达链表尾部的时候,慢指针所指向的就是链表的倒数第N个节点
参数:
n:需要删除的倒数第N个序数
"""
fast = self.__head
slow = self.__head
step = 0
while step <= n:
fast = fast.next_node
step += 1
while fast.next_node is not None:
tmp = slow
fast = fast.next_node
slow = slow.next_node
tmp.next_node = slow.next_node