次のような以前に与えられた個々のCRUD操作のリストは、二重リンクリストの操作の一部であります
パッケージcom.ebiz.list; / ** * @author YHJ * @Create 2019年7月17日午後04時48分 * / パブリック クラスDoubleListDemo { 公共 静的 ボイドメイン(文字列[]引数){ // ノード作成 HeroNode heroNode01 = 新しい新規の HeroNode(1、 "曲江"、 "タイムリー" ); HeroNode heroNode02 = 新しい新しい HeroNode(2 "盧俊義"、 "キリン" ); HeroNode heroNode03 = 新しい新しい HeroNode(3、 "役に立たない"、 "マスターマインド" ); HeroNode heroNode04 = 新しい新しい HeroNode(4、 "林"、 "Leopardのヘッド" ); // 二重連結リストを作成 DoubleList doubleList = 新しい新しいDoubleListを(); // ノードを追加 doubleList.add(heroNode01); doubleList.add(heroNode02); doubleList.add(heroNode03); doubleList.add(heroNode04); // ノードトラバース doubleList .LIST(doubleList); // 変更ノード doubleList.update(新新 HeroNode(3、 "便利"、 "夢" )); System.out.printlnは(ノードを変更」した後、横断---------- ------------------------------------ " ); doubleList.list(doubleList); // ノードを削除します System.out.println(「ノードを削除します----------------------------------------- ----------- " ); doubleList.del( 4。); doubleList.list(doubleList); } } // objectlist クラスdoubleList { // 最初のノード初期化 プライベート HeroNodeヘッド= 新しい新しい(HeroNodeを0、 ""、 "" ); // ノードトラバーサル 公共 ボイドリスト(doubleList doubleList){ // 空気か否かを判断する 場合(ヌル == doubleList.head.next){ するSystem.out.printlnは( "リストが空です。" ); } //一時的なノード HeroNodeのTEMP = head.next; ながら(真の){ IF(ヌル == TEMP){ BREAK ; } のSystem.out.println( "TEMP =" + TEMP); TEMP = temp.next; } } // 新しいですノードによって 公共 のボイドアドオン(heroNode heroNode){ // 一時的なノード heroNodeのTEMP = ヘッド; //は、最後のノードを見つける しばらく(trueに){ IF(temp.next == NULL ){ BREAK ; } TEMP = temp.nextが; } // whileループは終了し、最後のノードを見つけるために、新規ノード追加 temp.next = heroNodeと、 heroNode.pre = TEMP; } // 口コミコレスポンデントノード のパブリック ボイドアップデート(heroNode heroNode){ // 一時的なノード heroNodeのTEMP = ヘッド; // ブールリストに対応するノードが存在するかどうかを決定する ブール = ISEXISTをfalseに、 しばらく(真の){ もし(ヌル == TEMP){ ブレーク。 } であれば(temp.no == heroNode.no){ isExist = 真。 破ります; } TEMP = temp.next。 } であれば(isExist){ temp.name = heroNode.name。 temp.nickname = heroNode.nickname。 } 他{ するSystem.out.println( "没有对应英雄!!!" ); } } //ノード削除 、公開 のボイド・デル(int型NO){ IF(ヌル == head.next){ System.out.printlnは( "リストが空で、削除することはできません!" ); } // 定義識別子 ブール ISEXISTを= falseに; // 一時ノード定義 HeroNodeのTEMP = head.next; ながら(真の){ IF(ヌル == TEMP){ BREAK ; } IF(temp.no == NO){ ISEXIST =trueに、 BREAK ; } TEMP = ; temp.next } IF (ISEXIST){ temp.pre.next = temp.next; // 現在のノードは、その後、さらにリターンヌルポインタ例外を行い、最後のノードである IF(NULL!= TEMP。次){ temp.next.pre = temp.pre; } } 他{ するSystem.out.println( "NOノード!" ); } } } // ノードクラスの クラス{HeroNode 公共 INT NO; // 主人公番号 パブリック文字列名; // 主人公の名前 パブリック文字列ニックネーム; // 主人公の名前 パブリック HeroNode次に; // 次のノードヒーロー パブリック HeroNodeプレ; // ヒーローノード // コンストラクタ パブリック(HeroNodeをINT {NO、文字列名、文字列のニックネーム) この .NO = ; NO この .nameの= 名; この .nickname = ニックネーム; } @Override 公衆文字列のtoString(){ リターン "HeroNode {" + "NO =" +なし+ "NAME = '" +名+ '\'' + "ニックネーム= '" +ニックネーム+ '\'' + '}' 。 } }