博客
关于我
求单链表中有效节点的个数
阅读量:644 次
发布时间:2019-03-14

本文共 3238 字,大约阅读时间需要 10 分钟。

单链表有效节点个数的计算是判断链表中包含多少节点,这些节点都是有效存在的节点。单链表由节点组成,链表头部和尾部通常保留空占位节点,以便于操作。

定义一个节点类:

public class Node {
public int no;
public String data;
public Node next; // 指向下一个节点
public Node(int no, String data) {
this.no = no;
this.data = data;
this.next = null;
}
@Override
public String toString() {
return "Node{" + "no=" + no + ", data='" + data + '}';
}
}

创建单链表类:

public class LinkedList {
// 初始化头节点和尾节点
private Node head = new Node(0, "");
private Node tail = new Node(0, "");
// 单链表的有效长度计算
public int getLength(Node head) {
if (head.next == null) { // 头节点的下一个节点为空,说明长度为0
return 0;
}
int length = 0;
Node current = head.next;
while (current != null) {
length++;
current = current.next;
}
return length;
}
// 添加节点,按尾部添加
public void add(Node node) {
Node temp = head;
if (temp.next == null) { // 头节点的下一个节点为空,说明链表为空
head.next = node; // 只有一个节点,头节点的下一个是要添加的节点
} else {
while (temp != null) { // 找到当前末尾节点
temp = temp.next;
}
temp.next = node; // 在末尾添加新的节点
}
}
// 输出链表中的节点信息
public void traversal() {
Node current = head.next;
if (current == null) { // 链表为空,输出提示信息
System.out.println("链表为空");
return;
}
while (current != null) {
System.out.println(current.toString());
current = current.next;
}
}
}

使用示例:

public class SinglaLinkedListTest {
public static void main(String[] args) {
Node node1 = new Node(1, "123");
Node node2 = new Node(1, "123");
Node node3 = new Node(1, "123");
LinkedList linkedList = new LinkedList();
linkedList.add(node1); // 链表中现在有 node1
if (linkedList.getLength(linkedList.head)) {
System.out.println("链表有效长度为:" + linkedList.getLength(linkedList.head));
}
linkedList.add(node2); // 在 node1 后添加 node2, 链表中有 node1→node2
linkedList.add(node3); // 添加在 node2 后,链表为 node1→node2→node3
linkedList.traversal(); // 输出链表信息
System.out.println("链表有效长度当前是:" + linkedList.getLength(linkedList.head));
linkedList.add(new Node(4, "456")); // 继续添加新节点
linkedList.traversal();
System.out.println("链表长度现在是:" + linkedList.getLength(linkedList.head));
linkedList.add(new Node(5, "789")); // 再加一个节点
linkedList.traversal();
System.out.println("链表长度最终是:" + linkedList.getLength(linkedList.head));
}
}

测试输出展示:

链表有效长度为:0
链表信息:
Node{no=1, data=123}
Node{no=1, data=123}
Node{no=1, data=123}
链表长度当前是:3
链表信息:
Node{no=1, data=123}
Node{no=1, data=123}
Node{no=1, data=123}
Node{no=1, data=123}
Node{no=1, data=123}
链表长度现在是:4
链表信息:
Node{no=1, data=123}
Node{no=1, data=123}
Node{no=1, data=123}
Node{no=1, data=123}
Node{no=1, data=123}
Node{no=5, data=789}
链表长度最终是:5

这个解决方案详细阐述了如何计算单链表的有效节点数量。定义了节点类和链表类,实现了添加节点、遍历链表和获取链表长度的几个主要功能。当链表为空时,正确返回0;否则,正确遍历并计算出链表的长度。通过使用测试程序,可以验证每个功能的正确性,确保代码在不同状态下的表现。

注:以上代码使用的是Java语言,提供了一个完整的解决方案,包括节点类和链表类的实现。

转载地址:http://tqqoz.baihongyu.com/

你可能感兴趣的文章
Network 灰鸽宝典【目录】
查看>>
NetworkX系列教程(11)-graph和其他数据格式转换
查看>>
Networkx读取军械调查-ITN综合传输网络?/读取GML文件
查看>>
network小学习
查看>>
Netwox网络工具使用详解
查看>>
Net与Flex入门
查看>>
net包之IPConn
查看>>
Net操作配置文件(Web.config|App.config)通用类
查看>>
Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
查看>>
New Relic——手机应用app开发达人的福利立即就到啦!
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS
查看>>
NFS Server及Client配置与挂载详解
查看>>
NFS共享文件系统搭建
查看>>
nfs复习
查看>>
NFS安装配置
查看>>
NFS的安装以及windows/linux挂载linux网络文件系统NFS
查看>>
NFS的常用挂载参数
查看>>
NFS网络文件系统
查看>>
nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
查看>>