如何解决向后遍历双向链接列表
如果想要的索引在列表的后半部分,我正在尝试向后移动到双向链接列表中的索引。我现在可以编译但无法正常工作。有人可以在这里诊断问题吗?我猜它在循环逻辑中。
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 = 7
到i > 4
(即i = 5
)进行迭代-总共进行了3次。这意味着您需要完成以下步骤:
- 5(开始)
- 4(迭代1)
- 3(迭代2)
- 2(迭代2)
这是错误的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。