微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

向后遍历双向链接列表

如何解决向后遍历双向链接列表

如果想要的索引在列表的后半部分,我正在尝试向后移动到双向链接列表中的索引。我现在可以编译但无法正常工作。有人可以在这里诊断问题吗?我猜它在循环逻辑中。

    private Node<E> goToNode(int index) {
    Node<E> temp;
    double whichHalf = size / 2;
    
    if(index > whichHalf) {
        temp = tail.prev;
        for(int i = size; i > index; i--)
            temp = temp.prev;
        return temp;
        }
        
    else {
        temp = head.next;
        for(int i = 0; i < index; i++)
            temp = temp.next;
        return temp;
        }
}

谢谢!

解决方法

您不是从列表的开头或结尾开始的-您从第二个项目或倒数第二个项目开始(取决于您要迭代的方向)。这意味着您将始终通过索引。

此外,如果他们正在寻找的索引是头还是尾?没有办法退还。

假设您有列表A B C D E F G。让我们分解一下:

0    1         2    3      4   5          6
A    B         C    D      E   F          G
HEAD HEAD.NEXT      CENTER     TAIL.PREV  TAIL

假设索引为4。这意味着您从i = 7i > 4(即i = 5)进行迭代-总共进行了3次。这意味着您需要完成以下步骤:

  1. 5(开始)
  2. 4(迭代1)
  3. 3(迭代2)
  4. 2(迭代2)

这是错误的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。