我想用add and remove函数创建一个类sort本身,下面是我的代码:
class SortedList(object):
def __init__(self):
self.head=None
self.tail=None
def add (self, add_obj):
newNode=DLLNode(add_obj)
current=self.head
if current==None:
self.head=self.tail=newNode
else:
while add_obj>current.data:
current=current.next_node
newNode.next_node=current
newNode.prev_node=current.prev_node
current.prev_node.next_node=newNode
current.prev_node=newNode
def remove (self, element):
current=self.head
while element != current.data:
current=current.next_node
current.next_node.prev_node=current.prev_node
current.prev_node.next_node=current.next_node
current=None
我试着运行它,但失败了。谁能告诉我原因吗?在
查看
add
函数的逻辑,我可以看到一些问题-一旦您添加了一个元素,即一旦您的},当前是
self.head
和self.tail
不再-None
,那么您将执行while循环,以确定add_obj
是否大于current.data
。但是while循环写错了。假设我们在链表中只放了一个元素,我们试图添加一个大于current
的数据,current
将变成{None
,然后再次尝试做同样的检查,这次您尝试访问None
对象的data
属性,结果是None
。移除代码也存在类似的问题。第二,在add函数中,只处理大于head的值,如果以后添加的对象小于所有其他元素,则必须将其添加到自身.头部,但那个案子没有处理。
你没有处理一个比列表中所有其他元素都大的元素,在这个例子中,我想你打算自尾元素的值最高,但您也不会这样做。
相关问题 更多 >
编程相关推荐