繁体   English   中英

如何获取链表中负索引的节点?

[英]How to get node for negative index in a linked list?

嗨,我是Python的初学者,我才刚刚开始学习链表。 我写了一个方法get node,使节点位于列表中的特定索引处,但现在我想尝试从负索引中获取节点。 例如,如果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],则会收到错误AttributeError:'NoneType'对象没有属性'next'。

任何的意见都将会有帮助。

你写了

node=node.next

但是没有定义“节点”对象,因此它是“ NoneType”对象。 定义它的唯一时间是在它上面的if语句中,但实际上,如果您进入else语句,则尚未创建执行node.next的节点对象。

负索引和正索引之间的关系是正索引-len(self)=负索引,因此我在getNodeNegative中需要更改的所有内容是

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM