如果所需的索引位于双链接列表的后半部分,我将尝试向后移动到该列表中的索引。我现在已经编译了,但不能正常工作。有人能在这里诊断出这个问题吗?我猜这是循环逻辑中的某个地方。
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(
这是错误的。