1

次のリンクリストのコードを検討してください。基本的に、LinkedList クラスに 3 つのノードを作成し、コンテンツを表示しようとしましたが、DisplayLinkedList() メソッドで何か間違ったことをしています。現在、次のように出力を取得しています。

B
C
null

次のように表示したい: A B C

それぞれ。DisplayLinkedList() メソッドのどこが間違っているか教えてもらえますか?

package MyPackage;


class Node {

String data;
Node next;

public Node(String data, Node next){

    this.data = data;
    this.next = next;

}

public String getData(){
    return data;
}

public Node getNext(){

    return next;
}

public void setNext(Node n){
    next = n;
}

 public String toString() {
     return this.data;
 }


}

// CREATING LINKED LIST BACKWARDS AND APPLYING SOME OPERATIONS ON IT


class LinkedList{

Node cNode = new Node("C", null);

Node bNode = new Node("B", cNode);

Node list = new Node("A", bNode);


public void DisplayLinkedList(){

    Node prev = null;
    Node curr = list;

    while(curr != null){

        prev = curr;
        curr = curr.getNext();
        System.out.println(curr);

    }


}




public class LinkedListByME {


public static void main(String[] args) {


    LinkedList ll = new LinkedList();
    ll.DisplayLinkedList();



}

}
4

3 に答える 3

5

curr が null であるかどうかを確認し、THEN をインクリメントしているため、表示しようとしている curr が null 値になります。

while(curr != null){
    prev = curr;
    curr = curr.getNext();
    System.out.println(curr);

}

最初に印刷を行うと役立ちます。

while(curr != null){
    System.out.println(curr);
    prev = curr;
    curr = curr.getNext();
}
于 2013-04-27T05:15:58.070 に答える
5

あなたの問題はあなたのループにありますDisplayLinkedList。印刷する前に次のノードに進むため、最初のノードを「見逃し」ます。

そのはず:

while(curr != null) {
   System.out.println(curr);
   prev = curr;
   curr = curr.getNext();    
}

また、使用せずに追跡しているようですprev。メソッドの簡略化されたバージョンは次のようになります。

public void DisplayLinkedList() {
    Node curr = list;
    while(curr != null) {
        System.out.println(curr);
        curr = curr.getNext();
    }
}
于 2013-04-27T05:16:06.493 に答える
0
public void listTrasverse() {
    if(isEmpty()) {
        System.out.print("\nLIST IS EMPTY !!!");
    } else {
        while(current!=null) {
            current.displayLink();
            current=current.next;
        }
    }
}

このコードを使用して、displayLink()ノードクラスのdisplayLink()メソッドを呼び出します。メソッドは次のようになります

public void displayLink(){
    System.out.print("\nDATA= "+data);
}
于 2013-04-27T05:48:36.020 に答える