所以我寫了一個鏈表類,其中一個需要的函數是插入到某個位置。這是很簡單的,我必須爲它編寫的代碼,但我也放在一起的錯誤設置,以防止他人試圖指數在添加元素,是不是有:Python似乎忽略了這個類中的if語句。這是怎麼回事?
def insert_element_at(self, data, position):
position=position-1 #gets around the difference between indexing and the way we count things
if position >= self.size:
print("Error: Index larger than current list size")
return
newnode=self.Node(data)
current=self.header
for i in range (0, position):
current=current.nextnode
newnode.nextnode=current.nextnode
current.nextnode=newnode
self.size=self.size+1
我覺得像這樣的應該工作,但是每當我嘗試插入一個大於列表大小的元素時,代碼就會試圖一直工作到列表的末尾(或通過它) - 它試圖粘貼將數據導入不存在的節點。我得到這個錯誤:'NoneType'對象沒有'nextnode'屬性。
而且這是有道理的,但它應該不會去那麼遠。我怎樣才能解決這個問題?
下面是完整的代碼,用於上下文:https://pastebin.com/wgTLWWsx
你不守'nextnode'和'在此方法和其他方法中,「previousnode」鏈接同步。 – user2357112
恐怕我不太清楚你的意思。至少,這部分代碼是我確信應該工作的唯一代碼之一,因爲它是我們的教師給予我們的功能的直接改編。 – Wilhelm3
代碼的這一部分不會做任何事情來更新'previousnode'鏈接,所以不行,它不起作用。它可能適用於單鏈表,但你的鏈接是雙鏈接的。 – user2357112