當前位置:成語大全網 - 書法字典 - python編程中linkedlist報錯的原因是什麽,如何解決?

python編程中linkedlist報錯的原因是什麽,如何解決?

樓主妳好!

看看妳的代碼。問題很多。逐壹解釋。

1)首先,代碼的錯誤源於您想用List擴展SLinkedList類。在python中,除非有內置的叠代對象,否則所有其他對象都需要實現__iter__()函數來擴展list。註意:判斷對象是否叠代請使用is instance(obj,Iterable)判斷obj是否叠代,Iterable需要從集合中導入。

2)插入方法存在嚴重問題。如果按照樓主的方法插入,因為頭節點壹直在變,所以需要遍歷鏈表時不會找到頭節點;

3)3)pop方法的實現也存在問題,因為它是單向鏈,所以不能從結束節點刪除,只能刪除頭節點。

4)top方法的意圖未知。

其他:

以下是我修改方案的清單,我做了壹些錦上添花的操作。每個基本操作都將返回鏈表對象,以便您可以使用鏈操作來編寫代碼。叠代函數由yield實現,以避免擴展時占用不必要的內存。

此外:我的擴展直接獲取鏈表中每個節點的元素,並在代碼中添加壹些關鍵註釋;

#?-*-?編碼:?utf-8?-*-

上課?節點:

def?_ _ init _ _(self):

'''

Elm:節點元素

Nxt:下壹節點指針

'''

self.elm?self.nxt?=?沒有?沒有人

上課?SLinkedList:

def?_ _ init _ _(self):

'''

頭:?鏈表頭

end_point:鏈表尾部

'''

self.head=?沒有人

self.end_point?=?沒有人

def?推(自己,?x):

p?=?節點()

榆樹皮。=?x

如果?自我意識?是嗎?無:

self.head=?p

self.end_point?=?p

回歸?自己

self.end_point.nxt?=?p

self.end_point?=?p

回歸?自己

def?波普(自己):

‘‘因為實現了單個鏈表,所以只能從頭開始刪除節點‘‘‘。

如果?self.head.nxt?是嗎?無:

返回

自我意識?=?self.head.nxt

回歸?自己

def?_ _ ITER _ _(self):

臨時節點?=?自我頭像

什麽時候?臨時節點?是嗎?不是嗎?無:

產量?temp_node .榆樹

臨時節點?=?臨時節點。nxt

如果?__name__?==?_ _ main _ _:

‘‘添加1,2,5的三個元素,並刪除壹個頭節點‘‘‘

我的鏈接列表?=?SLinkedList()。推(1)。按(2)。按(5)。流行音樂()

print(list(my link list))事實上,在python中使用鏈表有些多余,但如果將其用作需求實踐也無妨。

望采納,謝謝!