我正在學習python和數據結構。我正在實施單向鏈表方法,其中包括插入頭部和給定位置。我結束了寫這個代碼:在給定位置插入節點
class Node :
def __init__(self,data=None,next_node=None) :
self.data = data
self.next = next_node
class LinkedList :
def __init__(self) :
self.head = None
def insertathead(self,new_data) :
new_node = Node(new_data)
new_node.next = self.head
self.head = new_node
def InsertNpos(self,new_data,pos):
start = self.head
if pos == 0:
return Node(new_data, self.head)
while pos > 1:
self.head = self.head.next
pos -= 1
self.head.next = Node(new_data, self.head.next)
return start
def PrintLinkList(self) :
temp = self.head
while (temp) :
print (temp.data)
temp = temp.next
if __name__ == '__main__' :
llist = LinkedList()
llist.insertathead(8)
llist.insertathead(3)
llist.insertathead(10)
llist.insertathead(12)
llist.insertathead(15)
llist.insertathead(2)
llist.InsertNpos(1,2)
llist.PrintLinkList()
輸出:
15
1
12
10
3
8
現在,在頭剛插入工作正常,但InsertNpos(1,2)給出錯誤的輸出。輸出應該是2,15,1,12,10,3,8。請告訴我我的代碼錯在哪裏。
什麼是錯誤的輸出?我在位置2看到一個值爲1的節點...或者您的編號從0開始?我們需要清楚地描述你預期會發生什麼,以及爲什麼。 – Prune
當你說'給出錯誤的輸出'時,請指定輸出應該是什麼。 –
您在'InsertNpos()'中使用'self.head'來遍歷鏈表,這意味着你失去了真正的'head'。我認爲'self.head = start'可能是簡單的修復,但你可能只是想用'start'來遍歷列表。即使在基本情況下插入'0'不會更新'self.head' – AChampion