図1に示すように、ノードクラス
パブリック クラスノード<T> { パブリックTデータ、 公共ノードの次。 }
2、実装クラス
パブリック クラス CircularLink <T> { プライベート 静的ノードヘッド= NULL ; / ** *初期化 * / 公共 ボイドinitCircularLink(){ ヘッド = 新しい新しいノード(); head.data = NULL ; head.next = ヘッド; } / ** *挿入ノード * * @paramの要素:ノード要素値 * / 公共 ボイドinsertCircularLink(T元素){ ノードnode = 新しい新しいノード()。// 初期化するノード node.data = 要素; IF(head.next == ヘッド){ head.next = ノードと node.next = ヘッド; } そうでなければ{ ノードTEMP = ヘッドと、 一方(= Temp.nextの!ヘッド){ TEMP = temp.next; } temp.next = ノードと node.next = ヘッド; } } / ** *値を削除 * *@param 要素は次の値を削除する * @return :削除は、そうでない場合はfalse真である * / パブリック ブールdeleteCircularLink(Tエレメント){ ノードTEMP = ヘッドと、 IF(temp.next == ヘッド){ System.out.printlnは( "リストが空である、全く削除可能な値が存在しない" ); 戻り falseに; } ながら(= temp.next!ヘッド){ IF(temp.next.data == 要素){ temp.next = temp.next.next; リターン trueに。 }他の{ TEMP = temp.next; } } リターン falseに; } / ** *削除添字 * * @param I:上付き文字値を削除する * @return :真または偽の削除 * / パブリック ブール deleteIndexCircularLink(int型I){ ノードTEMP = ヘッド; int型のインデックス= -1 ; IF(temp.next == ヘッド){ するSystem.out.println( "リストが空である、無削除可能値"); *指数設定値シーク返す 偽; } 場合(I <0 || I> = sizeCircularLink()){ するSystem.out.println( "越界下标" )。 返す 偽; } 一方(temp.next =!ヘッド){ インデックス ++ 。 もし(インデックス== I){ temp.next = temp.next.next。 } TEMP = temp.next。 } を返す 偽。 } / ** * * @Param 要素:探し要素 * / 公共 ボイドfindCircularLink(Tエレメント){ ノードTEMP = ヘッド; int型のインデックス= -1 ; IF(temp.next == ヘッド){ するSystem.out.println(「リストがされています空気、見つけることができません" ); } ながら(= temp.next!ヘッド){ TEMP = temp.next; インデックス ++ ; IF(temp.data == 要素){ TEMP = temp.next。 のSystem.out.printlnは( "添え字です「 +インデックス); を返す; } } のSystem.out.println( "あなたがここにない値を探している" ); } / ** *インデックスの評価 * @paramのインデックス * / パブリック 無効 findDataCircularLink(int型インデックス){ ノードTEMP = ヘッド; int型のサイズ= 0; //を用いてインデックスを増加 IF(temp.next == ヘッド){ するSystem.out.printlnは( "リストが空である、全く削除可能値が存在しません" )。 返します。 } IF(インデックス> = sizeCircularLink()||インデックス<0 ){ System.out.printlnは( "あなたの添字範囲外" ); リターン; } ながら(temp.next =!ヘッド){ TEMP = temp.next; IF(サイズ== インデックス){ System.out.printlnは( "あなたが値を探している:" + temp.data); を返す; } サイズ ++ ; } System.out.printlnは( "あなたは価値がありません" )。 } / ** *印刷 * / パブリック 空printCircularLink(){ ノードTEMP = ヘッド; System.out.printの( "循環リストを印刷:" ); しばらく(= temp.next!ヘッド){ TEMP = temp.next; System.out.print(temp.dataの + " " ); } のSystem.out.println(); } / ** *シーク長さ * * @return :返す長さ * / パブリック 静的 INT sizeCircularLink(){ ノードTEMP = ヘッド; int型のサイズ= 0; 一方、(temp.next =!ヘッド){ TEMP = temp.next。 サイズ ++ ; } 戻りサイズ; } パブリック 静的 ボイドメイン(文字列[]引数){ CircularLink <整数> circularLink = 新しいCircularLink()。 circularLink.initCircularLink(); circularLink.insertCircularLink( 1 )。 circularLink.insertCircularLink( 2 )。 circularLink.insertCircularLink( 3 )。 circularLink.insertCircularLink( 4 )。 circularLink.insertCircularLink( 5 )。 circularLink.printCircularLink(); System.out.println( "长度:" + circularLink.sizeCircularLink()); System.out.println(); System.out.println( "值删除值" ); circularLink.deleteCircularLink( 1 )。 circularLink.printCircularLink(); System.out.println( "长度:" + circularLink.sizeCircularLink()); System.out.println(); System.out.println( "下标删除值" ); circularLink.deleteIndexCircularLink()。1 circularLink.printCircularLink(); System.out.println( "长度:" + circularLink.sizeCircularLink()); System.out.println(); System.out.println( "值查找下标" ); circularLink.findCircularLink( 5 )。 circularLink.printCircularLink(); System.out.println( "长度:" + circularLink.sizeCircularLink()); System.out.println(); System.out.println( "下标查找值" ); circularLink.findDataCircularLink( 3 )。 circularLink.printCircularLink(); System.out.println( "长度:" circularLink.sizeCircularLink()); System.out.println(); } }
3、試験結果
印刷循環リスト:1 2 3 4 5 長さ: 5 値の値を削除します :印刷サイクルリスト 2345 の長さ: 4 マーク削除価値 印刷サイクルのリスト: 245 長さ: 3 値のルックアップインデックス 添字: 2 を印刷します循環リスト: 245 長さ: 3 の標準的なルックアップ値 あなたの境界インデックス プリント循環リスト: 245 長さ: 3