リンクリストを参照する増大したデータを達成するために使用することができ、変更、削除、クエリ操作
プログラムの基本的な構造
利用可能な特定のリストの開発に先立ち、あなたが最初の真実をクリアしなければなりません:Nodeクラスは、すべてのノードデータのノード関係を格納し、マッチングのために責任がある、使用にNodeクラスを分離することは不可能です。そして、ノードは独立し、外部バイパスを直接使用することができるノードリンクカテゴリクラスを使用することができているクラスの実装は、これは明らかにどんな意味がないことです。したがって、以下はNodeクラスのみカテゴリのリンクを使用しているので、こと、デザインの構造を変更する必要があります
適した内部クラスの選択を使用したとき、これは明らかです。内部クラスが外部クラス、他の点で使用することができるように、内部クラスは、私的使用を定義することができ、内部クラスは、直接アクセスを容易にするため、外部とクラスとの間のプライベートな性質であることができます
リンクされたリスト構造の開発
クラスリンク{ // リストクラス、外側だけを見ることができるクラス //が内部的に定義され、このようなサービスは主リンク 専用の クラスノード{ // のクラス定義 のプライベート文字列データ; // データ保存 専用ノード次; // 参照関係 パブリックノード(データ列){ この .DATA = データ; } // ===================以上の内部クラス========= =================== } プライベートノードルート; // ルート }
そして、主に完璧な充填コードと関数であります
増加したデータ
公共のボイドアドオン(変数のデータ型)
あなたは、新しいデータを追加したい場合は、オブジェクトクラスをノードする必要があり、リンクリンクの増加のために責任があり、ルートクラスで維持され、すべてのノードは、ノードのハンドルとの関係をマッチング
クラスリンク{ // リストクラス、外側だけを見ることができるクラス //が内部的に定義され、このようなサービスは主リンク 専用の クラスノード{ // のクラス定義 のプライベート文字列データ; // データ保存 専用ノード次; // 参照関係 パブリックノード(データ列){ この .DATA = データ; } 公共 ボイドた。AddNode(ノードnewNode){ IF(この .next == NULL){ // この次のノードが空である この .nextを= newNode; } 他{ // バック節約続けるには 、この.next.AddNode(newNode); } } パブリック 無効 printNodeを(){ // 印刷情報ノード のSystem.out.println(この.dataセクション); IF(これ!.next = ヌル){ この.next.printNode(); } } // ===================以上の内部クラス=============== ============= } プライベートノードルート; // ルート の公共 のボイドの追加(文字列データ){ // 仮定がnullを許可していません。 IF(データ== NULL ){ リターン; } ノードnewNode = 新しい新しいノード(データ); // ストアにデータ IF(この .Root == NULLの){ // 現在のがルートノードでない場合、ルートノードに設定され 、この = newNode .Root; // ルート保存 } 他 { // ルートノードの存在、次のノードに格納されたデータを見つけるために 、この.root.AddNode(newNodeを); } } 公共 ボイドプリントを(){ // すべてのノード情報を印刷 root.printNode(); } } パブリック クラスLinkDemo { 公共 静的 ボイドメイン(文字列引数[]){ リンクすべて = 新しいリンク()。 all.add( "こんにちは" ); all.add( "世界" )。 all.add(NULL )。 all.print(); } }
この場合、ヌルの使用は、決意を可能にしました。しかし、すべてのリストはnullにすることはできません