📌  相关文章
📜  数据结构示例-删除循环链表的末尾节点(1)

📅  最后修改于: 2023-12-03 15:26:09.784000             🧑  作者: Mango

数据结构示例-删除循环链表的末尾节点

循环链表是一种特殊的链表数据结构,其中链表的最后一个节点指向链表的第一个节点。如何删除循环链表的末尾节点呢?下面我们来介绍一种简单的方法。

算法思路
  1. 遍历循环链表,找到倒数第二个节点,记为pre_node;
  2. 让pre_node的next指针指向链表的头节点,即实现了删除末尾节点的效果;
  3. 释放原链表的最后一个节点。
算法实现
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)。算法实现简单易懂,是删除循环链表末尾节点的经典方法之一。

总结

本文介绍了一种删除循环链表末尾节点的方法,有助于程序员加深对数据结构和算法的理解。希望读者能够通过实践和总结,掌握更多数据结构和算法的知识。