繁体   English   中英

通过Java链表中的索引检索元素

[英]Retrieving an element by index in Java linked list

我正在编写一个链表(不使用Java),并试图创建一个get方法以通过其索引号返回该表的元素。 最初,我是使用for循环编写的。 我的代码在测试中多次失败,该测试在索引0处检索元素(我似乎能够在其他索引处检索元素)。 curr只是对我跟踪当前节点。

public double get(int index) {
    Node curr = this.sentinel.next;

    for (int i = 0; i < this.size(); i++) {
        if (i == index) {
            return curr.data;
        }
        curr = curr.next;
        if (index > numElts) {
            return Double.NaN;
        }
        if (index < 0) {
            return Double.NaN;
        }
    }
    return Double.NaN;
}

我以为for循环可能会给我带来麻烦,因此我将其编写为while循环。

 while (curr != null) {
  if (i == index) {
   i++;
   return curr.data;
 }
 curr = curr.next;
 }

但是,我仍然很难在0索引处检索元素。 感谢您提供关于这些遍历方法可能会出现问题的任何意见。 我有点迷路了。 如果我的格式已关闭,也要道歉,但仍然习惯于在此站点上进行格式化。

您将curr初始化为sentinal.next ,这是否会导致您跳过第一个元素? 您还应该为每个元素设置一个错误的错误,就像列表是1索引而不是0索引一样。

在while循环中,除非索引等于索引,否则您不会迭代i ,因此除非index为0,否则您永远找不到i == index的情况。

暂无
暂无

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

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