0

到目前为止,这是我的队列方法,

public String rQueue()
{
  for(int i = 0; i < queueName.length; i++)
    return queueName[i];
 return

" ";
}

这里的问题是,i++因为返回了,所以永远不会到达queueName[i],当我使用这个方法时,只返回第一个,我可以明白为什么。如何修复它以便我可以返回队列的全部内容。

我对链表也很困惑,我有一个Object(). 我只想Object.getMethod();为每个链接的每个实例返回。所以这就是我所拥有的。我能想到的唯一方法是使用另一个循环并查看每个位置,但我不知道如何返回类似的东西。

 public String displayLink()
{
      Link current = first;
      while(current != null)
      {
          current.displayMethod();
          current = current.next;
      }
}

我真的更卡在链表上,而队列只是一个技术问题。

4

3 回答 3

0

如果要返回串联,可以执行以下操作:

public String rQueue() {
  String r = "";
  for(int i = 0; i < queueName.length; i++) {
    if (i != 0) {
      r += ", ";
    }
    r += queueName[i];
  }
  return r;
}

对于链表,您可以返回一个集合。如果displayMethod返回string,您可以执行以下操作:

public Collection<String> displayLink() {
      Collection<String> result = new List<String>();
      Link current = first;
      while(current != null) {
          result.add(current.displayMethod());
          current = current.next;
      }
      return result;
}
于 2012-05-16T20:49:12.510 回答
0

第一部分,

public String[] qQueue { return queueName; } // or defensively copy, if you prefer

然后,您将数组作为队列内容,如果它适合您的其余代码。

第二部分对我来说看起来很好。

于 2012-05-16T20:49:22.123 回答
0

您对链表所做的实际上是遍历它的唯一方法(假设它是一个简单的链表,其中包含从一个节点到下一个节点的链接)。这也是为什么从链表中检索元素是 O(n) 操作的原因,因为您必须遍历链表才能找到您要查找的对象。
现在就返回值而言,您可以将它们附加到字符串并最终返回此字符串。像这样的东西会起作用:

public String rQueue() {
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < queueName.length; i++)
        sb = sb.append(queueName[i]);
    return sb.toString();
} 

请注意,我在上面的代码中使用了 StringBuffer,因为它比连接到 String 的末尾更有效,特别是对于大量连接。

于 2012-05-16T20:51:20.403 回答