如何在一个单列链接的列表中获取一个带有某个元素位置的int数组。

问题描述 投票:0回答:1

我有这样一个练习,在这个练习中,我应该用一个Singly Linked List和一个通用类型的特定元素,返回该元素出现的每个位置的int数组。返回该元素出现的每个位置的int数组.我的代码是这样的。

  public int[] ocurrences(T elem)
  {
    Node<T> cur = first;
    int[] ocurrence = new int[size];
    for(int i = 0; i < size -1; i++)
    {
      cur = cur.getNext();
      T element = cur.getValue();
      if(element.equals(elem))
      {
        ocurrence[i] = i;
      }
    }
    return ocurrence;
  }

first是第一个节点,size是列表的大小。

我的代码的问题是,对于一个列表例子{3,2,3},结果应该是[0,2]。我的代码打印的是数组的引用,当我逐个元素打印时,它打印的是[0,0,2]。

谢谢你的帮助

java arrays
1个回答
0
投票

你需要使用一个单独的计数器来计算 ocurrence[] 例如,在下面的代码中,我使用了一个计数器变量。c 的元素。

public int[] ocurrences(T elem) {
    Node<T> cur = first;
    int[] ocurrence = new int[size];
    int c = 0;
    for (int i = 0; i < size - 1; i++) {
        cur = cur.getNext();
        T element = cur.getValue();
        if (element.equals(elem)) {
            ocurrence[c++] = i;
        }
    }
    ocurrence = Arrays.copyOf(ocurrence, c);
    return ocurrence;
}

循环结束后,你只需要保留那些用 c. 为此,我使用了: ocurrence = Arrays.copyOf(ocurrence, c) 在函数返回之前 ocurrence[].

© www.soinside.com 2019 - 2024. All rights reserved.