python链表增加节点_Python双链表节点Rem

我在Python中创建了三个基本方法:addend和remove。我完全理解append方法,也完全理解show方法。但是,我对移除方法的工作方式有点困惑。在

这是我的两个类-节点类和双链接列表类:class ListNode:

def __init__(self, data, prev, next):

self.data = data

self.prev = prev

self.next = next

class DoubleList(object):

head = None

tail = None

def append(self, data):

new_node = ListNode(data, None, None)

if self.head is None:

self.head = self.tail = new_node

else:

new_node.prev = self.tail

new_node.next = None

self.tail.next = new_node

self.tail = new_node

def remove(self, node_value):

current_node = self.head

while current_node is not None:

if current_node.data == node_value:

if current_node.prev is not None:

current_node.prev.next = current_node.next

current_node.next.prev = current_node.prev

else:

self.head = current_node.next

current_node.next.prev = None

current_node = current_node.next

def show(self):

print("Show list data:")

current_node = self.head

while current_node is not None:

print(current_node.prev.data if hasattr(current_node.prev, "data") else None,)

print(current_node.data)

print(current_node.next.data if hasattr(current_node.next, "data") else None)

current_node = current_node.next

print("*"*50)

因此,当我使用DoubleList类中的remove方法时,元素将按预期从列表中移除。但是,节点实例也不见了,我通过在删除两个节点之前和之后使用这段代码来验证这一点。在

^{pr2}$

现在,我假设我根本不明白我的remove方法到底在做什么。在

我的理解是:

我认为该节点仍然存在,因为remove方法只重新分配previous nodes next属性和following nodes previous属性。但是,当前节点没有改变,它仍然保留对列表中它旁边的节点的引用。在

显然,我的理解是错误的,我想知道为什么。在

为什么我从链接列表中删除的节点实例会消失?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值