JAVA 实现带头结点的链表根据节点大小按顺序新增、修改、删除节点 该文章已实现单向链表的创建及遍历等操作。
那么在此基础上,如何获取到单链表的节点的个数(如果是带头结点的链表,不需要统计头节点)呢?
实现思路:
1、先判断链表是否为空,为空则return。
2、创建临时节点temp指向链表的头部,用于后续循环。
3、创建变量size,用于存储有效节点个数。
4、使用while循环,当temp的下一个节点为空时,则循环结束break;
否则,size++,同时将temp后移。
5、最后返回有效节点的个数size。
上代码:在SingleLinkedList2.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\n",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