0

今のところ、これがキューのメソッドです。

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

" ";
}

ここでの問題は、 が返さi++れるため、 に到達しないことqueueName[i]です。このメソッドを使用すると、最初の 1 つだけが返されます。その理由はわかります。キューの内容全体を返すことができるようにするには、どうすれば修正できますか。

リンクされたリストでも混乱しています。のリンクされたリストがありObject()ます。Object.getMethod();各リンクのすべてのインスタンスに対してのみ戻りたいです。これが私が持っているものです。私が考えることができる唯一の方法は、別のループを使用して各スポットを調べることですが、そのようなものを返す方法がわかりません。

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

私は実際にはリンクされたリストに固執しており、キューは技術的な問題のようなものです.

4

3 に答える 3

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を使用していることに注意してください。

于 2012-05-16T20:51:20.403 に答える
0

連結を返したい場合は、次のようにすることができます。

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

リンクリストについては、コレクションを返すことができます。displayMethodが文字列を返す場合は、次のようにすることができます。

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

次に、それがコードの残りの部分に収まる場合は、キューの内容として配列を取得します。

2番目の部分は私にはうまく見えます。

于 2012-05-16T20:49:22.123 に答える