链表——删除倒数第N的数的节点
解决方式:
我们使用的是快慢指针的方式
我们假设现在有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