python - 删除单链表中的最后一个节点

标签 python singly-linked-list

我可以检查一下吗 我们如何从单个链表中删除最后一个节点?

这和我们删除第一个节点的方式一样吗?

删除第一个节点

def deleteAtHead(self):
    temp = self.head
    self.head = self.head.next
    delete temp

删除最后一个节点

def deleteAtTail(self):
    prev = None
    temp = self.tail
    self.tail= self.tail.prev 
    delete temp

最佳答案

您必须从头部开始爬回到尾部。 尾部是第一个没有下一个的节点:next is None。 跟踪倒数第二个 (prev),将其 next 设置为 None

def deleteAtTail(self):   # remove_last would likely be a better name
    """ removes the last element of the singly linked list
    """
    temp = self.head
    while(temp.next is not None):
        prev  = temp
        temp = temp.next
    prev.next = None

prev.next 设置为 None 会删除尾节点(如果没有其他引用,它将被垃圾回收)

关于python - 删除单链表中的最后一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36514277/

相关文章:

Python FTPLIB 错误 530 权限被拒绝

c++ - 如何从单链表中删除每第 10 个节点?

c - 如何使用列表项的 glib 函数释放内存

c - 链表奇怪的行为

c++ - C++链表数据结构中删除挂起

c++ - 实现模板化单链表时遇到问题

python - 使用python提取回归系数

python - 数据文件中的分割线

python - 如何在python中对齐文本输出?

python - 如果 HTML 元素包含一定数量的数字字符,则删除该元素