📅  最后修改于: 2023-12-03 15:26:09.784000             🧑  作者: Mango
循环链表是一种特殊的链表数据结构,其中链表的最后一个节点指向链表的第一个节点。如何删除循环链表的末尾节点呢?下面我们来介绍一种简单的方法。
def delete_last_node(head):
if not head or head.next == head: # 链表为空或只有一个节点
return None
pre_node = head
while pre_node.next.next != head: # 找到倒数第二个节点
pre_node = pre_node.next
pre_node.next = head # pre_node的next指针指向链表的头节点
last_node = pre_node.next # 原链表的最后一个节点
last_node.next = None # 释放最后一个节点
return head
该算法的时间复杂度为O(n),其中n是链表的长度。算法的空间复杂度为O(1)。算法实现简单易懂,是删除循环链表末尾节点的经典方法之一。
本文介绍了一种删除循环链表末尾节点的方法,有助于程序员加深对数据结构和算法的理解。希望读者能够通过实践和总结,掌握更多数据结构和算法的知识。