问题描述:
求单链表有效节点的个数。
解决方案:
package LinkedList.test;
/**
* @version 1.0
* @auther WangCode
* @date 2021/4/3 16:08
*/
public class SingleLinkedListTest {
public static void main(String[] args) {
Node n1 = new Node(1, "123");
Node n2 = new Node(1, "123");
Node n3 = new Node(1, "123");
LinkedList linkedList = new LinkedList();
linkedList.add(n1);
linkedList.add(n2);
linkedList.add(n3);
System.out.println(linkedList.getLength(linkedList.getHead()));
}
}
//定义一个节点
class Node{
public int no;
public String data;
public Node next;
//构造方法
public Node(int no, String data){
this.no = no;
this.data = data;
}
@Override
public String toString() {
return "Node{" +
"no=" + no +
", data='" + data + '\'' +
'}';
}
}
//创建单链表
class LinkedList{
//初始化头节点
private Node head = new Node(0,"");
public Node getHead() {
return head;
}
/**
* 添加节点
* @param node
*/
public void add(Node node){
Node temp = head;
while (true){
if (temp.next == null){
//找到链表最后一个节点
break;
}
temp = temp.next;
}
temp.next = node;//在链表的最后添加新的节点
}
/**
* 遍历链表
*/
public void list(){
Node temp = head.next;
if (temp == null){
System.out.println("该链表为空");
return;
}
while(true){
if (temp == null){
break;
}
System.out.println(temp);
temp = temp.next;
}
}
/**
* 获取单链表的长度
* @param head 单链表的头节点
* @return 返回单链表的有效长度
*/
public int getLength(Node head){
if (head.next == null){
return 0;
}
int length = 0;
Node temp = head.next;
while(temp != null){
length++;
temp = temp.next;
}
return length;
}
}
链表是由节点构成的,我们先创建我们的节点类;
创建单链表,添加了三个功能,添加节点(尾部添加)、遍历链表、返回链表有效长度;
public int getLength(Node head){
if (head.next == null){
//这里我们定义的头节点是个空节点,所以此时链表为空
return 0;
}
int length = 0;//定义长度
Node temp = head.next;//辅助指针
while(temp != null){
// 一直遍历到链表的尾部
length++;
temp = temp.next;
}
return length;
}
运行结果:
所实话这个蛮简单的;