データ構造のデータのJavaバージョンを挿入する際に遭遇したノードは空に質問です

空のノードに発生した問題は、Javaデータ構造とアルゴリズムの教科書の補間コードのデモバージョンを率います。最初のコード。

Objectlist

インポートjava.util.Scanner;
 
 パブリック クラス ListLinked <T> { 
     ListLinkedNode <整数> =ヘッド新しい新しい ListLinkedNode <整数>(); // 宣言ヘッドノード
     // ノードを追加する
    公共  ボイド addFromHead(INT E){ 
        ListLinkedNode <整数> P = 新しい新しい ListLinkedNode <整数>(); // 宣言し、作成し、ノードpはノード挿入ある
        p.setData(E); 
        p.setNext(head.getNext()); 
        head.setNext(P); // 後のヘッドノードPに挿入
    }
     // リストヘッド補間作成
    パブリック 静的 ListLinked <整数>createFromHead(){ 
        ListLinked <整数> = listLinked 新しい新しい ListLinked <>(); // リストを初期化 
        するSystem.out.println( " -リストの先頭補間を確立する- " ); 
        System.out.printlnはは(「鎖長を入力してください: " ); 
        スキャナSC = 新しい新しいスキャナ(System.in);
         // N-:チェーンの長さの
        int型 N- = sc.nextInt(); 
        System.out.printlnは( "値を入力してください: " );
         のためint型 Iに= 0; I <N-; I ++は){ 
            System.out.printの( + 1つのI(+ "を入力してください")+ " 値:" );
             int型 E = SC。nextInt();
            listLinked.addFromHead(E); 
        } 
        のSystem.out.println( "链表创建完毕" )。
        リターンlistLinked; 
    } 
    // 输出
    公共 ボイドディスプレイ(){ 
        System.out.printlnは( "{" )。
        ListLinkedNode <整数> P = 新しい ListLinkedNode <整数> (); 
        P = head.getNext()。
        一方、(!p = NULL ){
             int型値= p.getData()。
            System.out.println(値)。
            P = p.getNext()。
        } 
        のSystem.out.println( "}" )。
    } 

}

 

ノードクラス

パブリック クラス ListLinkedNode <T> {
     // データメンバー
    のプライベートTデータ、
     プライベート ListLinkedNode <T> 次;
     // データフィールドを取得し
    、公共TのgetData(){
         返すデータを; 
    } 
    // データフィールド設定
    パブリック 無効にsetData(T Data)を{
         この .DATA = データ; 
    } 
    // 取得ポインタフィールド
    パブリック ListLinkedNode <T> getNextを(){
         戻り次のページを; 
    } 
    //はポインタフィールド設定
    パブリック ボイド SetNext(ListLinkedNode <T>を次){
         この .next = ;次
    } 
    // 引数コンストラクタ有する
    公共ListLinkedNode(Tデータ){
         この .DATA = データと、
         この .next = NULL ; 
    } 
    // 引数なしコンストラクタ
    パブリックListLinkedNode(){ 
        
    } 
}

 

テストカテゴリ

パブリック クラスのテスト{
     公共 静的 ボイドメイン(文字列[]引数){ 
        ListLinkedリスト = 新しいListLinked()。
        list.createFromHead(); 
        list.display(); 
    } 

}

 

試験した場合、出力の実装は、pがNULLであった場合、pが空であるか否かが判定されます。 

ブレークポイントのデバッグは、私が問題に気づきました。

 

 

ポインタなどのJava参照型ため、addFromHeadにおける方法では、次の先頭アドレスにオブジェクトpを保存します。

addFromHead方法、ローカル変数pのライフサイクルの終わりには、ガベージコレクションメカニズムによって奪われた場合

ごみは、次の頭を奪われたような変数は、ヒープ上のpオブジェクトの前を指す何スタック、ヒープ・オブジェクトも使用されていない、それがnullであります

 

おすすめ

転載: www.cnblogs.com/zrx7/p/11495120.html