好的,作业中的一个问题说要创建一个有序的双向链表......这样每个具有字典顺序较小名称的对象都在另一个“之前”......就像字典中的名字......也可以排列具有相同名称的对象以任何顺序...
链接我拥有的两个对象setBefore()
和setAfter()
方法......我已经做了很多......但仍然不知道我做错了什么......可能是你们的一些指导可以帮助我......
atMe
是一个已经存在于双向链表中的对象,并且newFrob
是一个要插入的对象...
def insert(atMe, newFrob):
if newFrob.myName() < atMe.myName():
if atMe.getBefore() == None:
atMe.setBefore(newFrob)
newFrob.setAfter(atMe)
elif atMe.getBefore().myName()<newFrob.myName():
atMe.getBefore().setAfter(newFrob)
newFrob.setBefore(atMe.getBefore)
atMe.setBefore(newFrob)
newFrob.setAfter(atMe)
else:
insert(atMe.getBefore(),newFrob)
elif newFrob.myName() > atMe.myName():
if atMe.getAfter() == None:
atMe.setAfter(newFrob)
newFrob.setBefore(atMe)
elif atMe.getAfter().myName()>newFrob.myName():
atMe.getAfter().setBefore(newFrob)
newFrob.setAfter(atMe.getAfter)
atMe.setAfter(newFrob)
newFrob.setBefore(atMe)
else:
insert(atMe.getAfter(),newFrob)
elif newFrob.myName()==atMe.myName():
if atMe.getAfter() != None:
newFrob.setAfter(atMe.getAfter())
newFrob.setBefore(atMe)
if atMe.getAfter() != None:
atMe.getAfter().setBefore(newFrob)
atMe.setAfter(newFrob)
这是要使用的Frob类......
class Frob(object):
def __init__(self, name):
self.name = name
self.before = None
self.after = None
def setBefore(self, before):
self.before = before
def setAfter(self, after):
self.after = after
def getBefore(self):
return self.before
def getAfter(self):
return self.after
def myName(self):
return self.name
其中 Before 和 After 是指向双链表中左右对象的链接...来自此类的对象将被插入到双链表中...
例子:
a=Frob('foo')
b=Frob('bar')
c=Frob('frob')
d=Frob('code')
code output
insert(a,b) bar->foo
insert(a,c) bar->foo->frob
insert(b,d) bar->code->foo->frob
现在假设
code output
insert(b,Frob('code')) bar->code->code->foo->frob