双向非循环链表的实现python

各位前辈,这段代码到底哪里有问题啊,cpu都烧炸了(双向非循环链表)
from DuNode import DuNode
class Do_nonCycLinkList:
    def __init__(self):
        self._head = DuNode(None)
        self._head.next = self._head
        self._head.prior = self._head

    def empty(self):
        return self._head.next is None

    def clear(self):
        p = self._head.next
        self._head.next = None
        while p:
            q = p
            p = p.next
            del q

    def insert(self, i, item):
        if i < 0:
            raise IndexError("I is too small,no element is in position i")
        previous = self._head
        count = -1
        while previous.next!=self._head and count < i - 1:
            previous = previous.next
            count += 1
        following= previous.next
        if count==i-1:
            current = DuNode(item,previous,following)
            previous.next = current
            following.prior=current
        else:
            raise IndexError("I is too big,no element is in position i")
    def __len__(self):
        p = self._head.next
        count = 0
        while p:
            count += 1
            p = p.next
        return count
    def remove(self, i):
        if i < 0:
            raise IndexError("I is too small,no element is in position i")
        previous = self._head
        t = -1
        while previous and t < i - 1:
            previous = previous.next
            t += 1
        if previous is None:
            raise IndexError("I is too big ,no element is in position i")
        current = previous.next
        if current is None:
            raise IndexError("I is too big ,no element is in position i")
        previous.next = current.next
        item = current.enty
        del current
        return item
    def retrieve(self, i):
        if i < 0:
            raise IndexError("I is too small,no element is in position i")
        p = self._head.next
        j = 0
        while p and j < i:
            p = p.next
            j += 1
        if p is None:
            raise IndexError("I is too big ,no element is in position i")
        else:
            return p.enty

    def contains(self, item):
        # """判断表中是否包含元素item"""
        current = self._head.next
        while current:
            if current.entry == item:
                return True
            else:
                current = current.next
        else:
            return False

    def traverse(self):
        # """输出表中所有元素"""
        previous = self._head.next
        l = []
        t = 0
        while t < self.__len__():
            t += 1
            l.append(previous.entry)
            previous = previous.next
        # for c in l:
        return l

    def __str__(self):
        current = self._head.next
        element = ''
        t = 0
        while t < self.__len__():
            t += 1
            element += str(current.entry)
            current = current.next
        return element

if __name__ == '__main__':
    l =Do_nonCycLinkList()
    l.insert(0,1)
    l.insert(1,2)
    l.insert(2, 3)
    print(l)
    print(l.contains(4))
    print(l.__len__())

cpu一直占用,说明你的代码存在死循环了。具体调试下。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^