JAVAは一方向チェーンテーブルの有効ノードの個数を取得する
1864 ワード
JAVAが先頭ノードを実現するチェーンテーブルは、ノードサイズに応じてノードの追加、修正、削除を順次行います.この文章では、一方向チェーンテーブルの作成や遍歴などの操作を実現しています.
では、その上で、単一チェーンテーブルのノードの個数(先頭ノードのチェーンテーブルであれば、ヘッダノードを統計する必要はありません)をどのように取得しますか?
実現構想:
1、チェーンテーブルが空かどうかを判断し、空であればreturn.
2、テンポラリノードtempを作成してチェーンテーブルの頭部を指し、後続のループに使用する.
3、有効なノード数を格納する変数sizeを作成します.
4、whileループを使用し、tempの次のノードが空の場合、ループはbreakを終了する.
そうでなければ、size++で、tempを後ろに移動します.
5、最後に有効なノードの数sizeを返します.
上コード:SingleLinkedList 2.classに次の方法を追加します.
テストクラス:
出力結果:
HeroNode{no=1,name='AAA,nickName='A}HeroNode{no=2,name='BBB,nickName='B}HeroNode{no=3,name='CCC,nickName='C}HeroNode{no=4,name='DDD,nickName='D}取得チェーンテーブル有効ノードの個数は4
では、その上で、単一チェーンテーブルのノードの個数(先頭ノードのチェーンテーブルであれば、ヘッダノードを統計する必要はありません)をどのように取得しますか?
実現構想:
1、チェーンテーブルが空かどうかを判断し、空であればreturn.
2、テンポラリノードtempを作成してチェーンテーブルの頭部を指し、後続のループに使用する.
3、有効なノード数を格納する変数sizeを作成します.
4、whileループを使用し、tempの次のノードが空の場合、ループはbreakを終了する.
そうでなければ、size++で、tempを後ろに移動します.
5、最後に有効なノードの数sizeを返します.
上コード:SingleLinkedList 2.classに次の方法を追加します.
public int getSingleLinkSize(HeroNode2 head){
if(head.next == null){
return 0;
}
HeroNode2 temp = head;
int size = 0;
while (true){
if(temp.next == null){
break;
}
size++;
temp = temp.next;
}
return size;
}
テストクラス:
public class SingleLinkedListDemo2 {
public static void main(String[] args) {
SingleLinkedList2 singleLinkedList = new SingleLinkedList2();
HeroNode2 h1 = new HeroNode2(1,"AAA","A");
HeroNode2 h2 = new HeroNode2(2,"BBB","B");
HeroNode2 h3 = new HeroNode2(3,"CCC","C");
HeroNode2 h4 = new HeroNode2(4,"DDD","D");
singleLinkedList.addByOrder(h1);
singleLinkedList.addByOrder(h3);
singleLinkedList.addByOrder(h4);
singleLinkedList.addByOrder(h2);
singleLinkedList.list();
int size = singleLinkedList.getSingleLinkSize(singleLinkedList.getHeadNode());
System.out.printf(" %d
",size);
}
}
出力結果:
HeroNode{no=1,name='AAA,nickName='A}HeroNode{no=2,name='BBB,nickName='B}HeroNode{no=3,name='CCC,nickName='C}HeroNode{no=4,name='DDD,nickName='D}取得チェーンテーブル有効ノードの個数は4