JAVAは一方向チェーンテーブルの有効ノードの個数を取得する

1864 ワード

JAVAが先頭ノードを実現するチェーンテーブルは、ノードサイズに応じてノードの追加、修正、削除を順次行います.この文章では、一方向チェーンテーブルの作成や遍歴などの操作を実現しています.
では、その上で、単一チェーンテーブルのノードの個数(先頭ノードのチェーンテーブルであれば、ヘッダノードを統計する必要はありません)をどのように取得しますか?
実現構想:
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