2012-02-23 3 views
1

つまり、私はDancerオブジェクトのラインを持っています。互いに接続されたオブジェクトの行末からオブジェクトを削除するにはどうすればよいですか? (Java)

public class Dancer { 

    private String name; 
    private Dancer next; 

    public Dancer(String nameInput, Dancer followingDancer){ 
     name = nameInput; 
     next = followingDancer; 
    } 

私はセッターとゲッターを持っています。

これらの文字列を文字列にするには、私はCongaLineを持っています。

public class CongaLine { 

    private Dancer head; // first dancer in the conga line. 

    public CongaLine() { 
     head = null; 
    } 

だから、最後のダンサーの隣を見つけるために、whileループを使用して、どのように私は、抽出物にCongaLineから最後のダンサーを見つけるだろうか?欠陥がある

私の現在の方法は、次のようになります。

public String removeFromEnd() { 
    String removed = null; 
    // For multiple dancers, find the penultimate and remove its "next" 
    while (head.getNext() != null) { 
     if (head.getNext().getNext() == null){ 
     removed = head.getNext().getName(); 
     head.setNext(null); 
     } 
    } 
    // In the case of only one dancer, remove that dancer. 
    if (head != null && head.getNext() == null) { 
     removed = head.getName(); 
     head = null; 
    } 
    return removed; 
} 
+0

CongaLineでは、[LinkedList]タイプのフィールドがないのはなぜですか(http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html) ?プライベートリストのようなものダンサー=新しいLinkedList ();たとえば、dancer.getLast()を取得できます。 – Jasonw

+0

それはあまりにも簡単になります。私はあらかじめ定義されたクラスを変更することなくそれを行う必要があります。 – Jazzertron

答えて

2

これはlinked listです。 congaLineの最後のダンサーになります。このdの終わりに

Dancer d = congaLine.getHead(); 
while(d.getNext() != null) { 
    d = d.getNext(); 
} 

:あなたはコンガラインの最後に到達するまで、あなたはダンサーをループする必要があります。 ダンサーにnextダンサー、コンガラインにダンサーheadのゲッターを実装するだけで済みます。

+0

[here](http://stackoverflow.com/search?q=%5Bjava%5D+user%3A230513+java.util.LinkedList)にいくつかの例があります。 – trashgod

3

うーんあなたはそれではなく、ヒントのカップルを与える方が良いの学習のためにこれをやっているので、私は思うが、私は(それがわずか数行です)あなたの正確なコードを与えることができる:

  • は何について考えてみようプロパティそれを識別するために使用できる最後のダンサーがあります。
  • すべてのダンサーを見て正しいものを見つけられるようにする方法について考えてみましょう。
  • 他に何が起こる必要があるか(たとえば、最後のダンサーに)、これらの変更が常に確実に行われるようにする方法について考えてください。
+0

今は気分が悪いです。 – Jivings

+1

気分を悪くしないでください - それはすべての学習経験の一部です!私は26年をコーディングしてきましたが、私のコードは常に間違っています。重要なのは、あなたの思考を行使してさまざまな解決策を試して、発生したときに問題を解決する良い方法を見つけることです。 :-) – mikera

+0

プロパティは "次の"プロパティになります。それはnullになります。私は第2弾についてはわかりません。私は最後のダンサーの「次へ」をヌルにする必要があると確信しています。また、nullまたは削除されたダンサーのいずれかを返す必要があります。私は私の方法では何が欠けているのか分かりません。 – Jazzertron

関連する問題