所以我正在编写一个链表类,其中一个必需的函数是插入某个位置。这很简单,我已经为它编写了代码,但我还整理了一个错误设置,以防止某人试图在不存在的索引处添加元素:
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
答案 0 :(得分:0)
问题可能是位置从0开始,大小从1开始,所以位置是4,大小是5