Skip to content

你好,关于循环双向链表的remove方法的一些疑问 #24

Closed
@xiaopingzhong

Description

@xiaopingzhong

我试了下,remove方法,发现只是长度上的改变,
链表的值没有改变(即使我使用del,删除对应的节点).
我修改的删除代码如下:

    def remove(self, value_node: Node):
        if self.lenght == 0:
            # raise Exception("is empty")
            return
        # 后一个节点连接前一个节点
        value_node.next.previous = value_node.previous
        # 前一个节点连接后一个节点
        value_node.previous = value_node.next
        del value_node
        # 记住还要记得删除节点
        self.lenght -= 1
        return 1

测试代码为:

    # 添加元素
    cycle_double_link_list.append(0)
    cycle_double_link_list.append(1)
    cycle_double_link_list.append(2)
    # 坐标添加元素
    cycle_double_link_list.appendLeft(4)

    # 长度判断
    assert len(cycle_double_link_list) == 4

    cycle_double_link_list.remove(value_node=head_node)
    assert len(cycle_double_link_list) == 3
    #下面这句报错,之前没错
    # assert list(cycle_double_link_list) == [0,1,2]

如果要实现列表的实时更新,该怎么做.谢谢.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions