各位前辈,这段代码到底哪里有问题啊,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一直占用,说明你的代码存在死循环了。具体调试下。
不知道你这个问题是否已经解决, 如果还没有解决的话: