如何在链接列表中获取负索引的节点



嗨,我是Python的初学者,我刚刚开始学习链接列表。我写了一个方法获取节点,该节点在列表中的特定索引中获取节点,但是现在我想尝试从负索引中获取节点。例如,如果a_list = [1,2,3] a_list [-1]等于3,依此类推。这是我的get_node方法,仅适用于正索引:

def _get_node(self, index):
    if index >0 and index >=len(self) :
        raise IndexError( "Positive index out of range")
    node=self.head
    for _ in range(index):
        node=node.next
    return node

现在,我尝试为负面索引编写另一种方法:

 def _get_nodeNegative(self, index):
    if index <0 and index < -1 *len(self) :
        raise IndexError( "Positive index out of range")
    if index==-1:
        node=self._get_node(len(self)-1)
    else:
        for _ in range(index, 0 ,1):
          //Problem here
            node=node.next
    return node

问题是链接列表只能迭代前进,因此,如果我尝试获取a_list [-2],我会获得错误属性:'nontype'对象没有属性'next'。

任何建议都会有所帮助。

你已经写了

node=node.next

但是没有"节点"对象定义的对象,因此它是"非类型"对象。您唯一在上面的if语句中定义它的时间,但实际上,如果您进入其他语句,则没有创建一个节点对象来执行node.next。

负指数和正索引之间的关系是正索引len(self(=负指数

for _ in range(index, 0 ,1):
        node=self._get_node(index+len(self))

相关内容

  • 没有找到相关文章

最新更新