python 删除链表倒数第n个节点

    def delete_k_node(self, head, index):
        """
        删除链表倒数第k个节点
        :param head:
        :param index:
        :return:
        """
        # 虚拟头结点
        dummy = Node(-1)
        dummy.next = head
        # p2指向dummy,p1指向head
        p1, p2 = head, dummy
        # p1先走index步
        for i in range(0, index):
            p1 = p1.next

        while p1:
            # p1和p2一起走
            p1 = p1.next
            p2 = p2.next
        # p1走到末尾的时候。p2当前的位置就是目标位置的前一个,因为它从dummy开始。
        # 所以此时修改p2的next的指向到下一个,就可以实现删除的效果
        p2.next = p2.next.next
        # 最后别忘了去掉虚拟节点
        return dummy.next
posted @ 2023-01-05 19:42  公众号python学习开发  阅读(78)  评论(0编辑  收藏  举报