反向遍历双链表



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

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(

这是错误的。

相关内容

  • 没有找到相关文章

最新更新