python双向链表__len__

时间:2013-03-29 01:12:58

标签: python

我似乎无法让我的 len 功能正常工作,我一直在尝试大量的东西,但我是一个完全的初学者,所以我很确定我错过了一些完全明显的东西。这是我的代码......

 def __len__(self):
    if self.head is None:
        return 0
    else:
        return self.size

我背后的想法很简单。如果双向链表的头部为None,则它必须为空,因此返回0,否则,只返回列表的大小。

然而,我得到一个断言错误说...

AssertionError: List should contain 1 element, but length is 0

提前感谢任何帮助。

编辑:这是运行我的函数的代码......

testList.add(14)
assert len(testList) == 1, "List should contain 1 element, but length is %r" % len(testList)

EDIT2:这是我的添加功能,我很确定它的权利,我花了2个小时就可以了...

def add(self, value):
    newNode = DoubleListNode(value)
    if self.head is None:
        self.head = newNode
        self.tail  = newNode
        newNode.prev = None
        newNode.next = None
        return newNode
    elif value < self.head.data:
        self.head = newNode
        newNode.next = self.head
        newNode.prev = None
        return newNode
    elif value > self.tail.data:
        self.tail = newNode
        newNode.prev = self.tail
        newNode.next = None
        return newNode
    else:
        node = self.head
        node2 = node
        while node is not None and node.data < value :
            node = node.next
            node2 = node.prev
        newNode.next = node.prev
        newNode.prev = node2.next
        return newNode

0 个答案:

没有答案