0

2つのリンクリストをJavaの3番目のリスト、最初のリンクリスト「myList1」、2番目のリンクリスト「myList2」、3番目のリンクリスト「myList3」に追加するという奇妙な問題に遭遇しました。

結合メソッドは、最初のLinkedList "myList1"、次に2番目の"myList2"を3番目のLinkedList"myList3"に追加することになっていますが、空のときに3番目のリストに追加する際に問題が発生しました。すべてのものがスムーズに進む少なくとも1つの要素。

コード:

Node current = myList1.head;            
while (current != null) {                                                                       
    Node newcurrent = myList3.head;
    int h1 = current.getData();                                  
    Node newNode = new Node(h1);
    if (newcurrent == null)     
        //the problem is with this code                                             
        newcurrent = newNode;                           
    else {                                     
        if (newcurrent.getLink() == null) {
            newNode.setLink(newcurrent.getLink());                                         
            newcurrent.setLink(newNode);                                      
        } else {                                        
            Node current11 = newcurrent;                                                
            while (current11.getLink() != null) {
                current11 = current11.getLink();
            }                       
            current11.setLink(newNode);                          
        }                                    
    }                                                           
    current = current.getLink();                            
}

3番目のリストが空の場合、ノードは3番目のLinkedListに追加されず、他の多くのコードを試しましたが、どちらも機能しませんでしたが、3番目のLinkedListに少なくとも1つの要素を入力すると、リストは正常に追加されます。

私が試した他のコード:

newcurrent.setLink(newNode);

newNode = newcurrent; 
newcurrent = newNode;

newNode.setLink(newcurrent); 
newcurrent.setLink(newNode);

newNode.link = newcurrent; 
newcurrent.link = newNode;
4

2 に答える 2

0
Node newcurrent = myList3.head;
....
if (newcurrent == null)     
    //the problem is with this code                                             
    newcurrent = newNode;                           

なぜ2つのリストがあるのか​​わかりませんが、上の最後の行はローカル変数に割り当てているだけです。代わりに次のようにする必要がありますか?

myList3.head = newNode
于 2013-01-10T21:53:38.603 に答える
0

あなたはこれを少し複雑にしすぎていると思います。リスト内のリンクはすでにあります。リンクmyList3.tailする必要があるだけmyList1.headで、各ノードを個別に追加することをループする必要はありません。を保存しているようには見えないのでtail、最後まで繰り返す必要がありますmyList3

if (myList3.head == null)
    myList3.head = myList1.head;
else {
    Node list3iter = myList3.head;
    while (list3iter.getLink() != null) {
        list3iter = list3iter.getLink();
    }
    list3iter.setLink(myList1.head);
    }
}

さらにもう1つ、、、、などcurrentの名前を追跡しようとするのは苦痛だと思います。これらはすべて、私の脳にとってほぼ同じことを意味します。あなたが私のようなら、もう少しわかりやすい名前を付けると、変数がここで何をするのかを追跡するのに役立つかもしれません。current11newcurrent

于 2013-01-10T22:17:50.237 に答える