有没有同志帮忙看看这段代码的错误啊,一直停不下来只能stop的那种
双向非循环链表的长度(数据结构)
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 __len__(self):
p = self._head
count = 0
while p !=None:
count += 1
p = p.next
return count
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')
previous = self._head
count = -1
while previous and count < i - 1:
previous = previous.next
count += 1
following = previous.next
if previous is None:
raise IndexError('i is too big')
new_node = DuNode(item, previous, following)
previous.next = new_node
following.prior = new_node
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
for i in range(self.__len__()):
if current.entry[i] == item:
return True
return False
def traverse(self):
# """输出表中所有元素"""
p = self._head.next
l = []
t = 0
while p:
t += 1
l.append(p.entry)
p = p.next
# for c in l:
return l
def __str__(self):
current = self._head.next
element = ''
t = 0
while current:
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))
```