好了一個賦值的問題說創建一個有序的雙向鏈表......這樣每個對象的詞典上就會有更小的名字出現在「Before」之前......另一個......就像Dictionary中的名字......也是同名對象可以按任何順序排列...Ordered Doubly List
要連結兩個對象我有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
這裏之前,並鏈接左右對象雙向鏈表... 對象後從這個類將被插入到雙向鏈表...
例子:
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
@downvoters:請解釋。正如我所看到的,OP已經明確提出了這個問題,盡其所能,儘管他找不到解決方案並需要幫助。他可能不太擅長Python,但我們應該幫助他而不是downvoting。 – Abhijit
請解釋你的意思_exactly_有序雙鏈表?解釋它應該如何工作,它應該實施什麼方法...等等等等...... –
@eumiro謝謝...但仍然沒有改進... – adil