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

本文共 3143 字,大约阅读时间需要 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/

你可能感兴趣的文章
nginx + etcd 动态负载均衡实践(三)—— 基于nginx-upsync-module实现
查看>>
nginx + etcd 动态负载均衡实践(二)—— 组件安装
查看>>
nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
查看>>
Nginx + Spring Boot 实现负载均衡
查看>>
Nginx + uWSGI + Flask + Vhost
查看>>
Nginx - Header详解
查看>>
Nginx - 反向代理、负载均衡、动静分离、底层原理(案例实战分析)
查看>>
nginx 1.24.0 安装nginx最新稳定版
查看>>
nginx 301 永久重定向
查看>>
nginx css,js合并插件,淘宝nginx合并js,css插件
查看>>
Nginx gateway集群和动态网关
查看>>
Nginx Location配置总结
查看>>
Nginx log文件写入失败?log文件权限设置问题
查看>>
Nginx Lua install
查看>>
nginx net::ERR_ABORTED 403 (Forbidden)
查看>>
Nginx SSL私有证书自签,且反代80端口
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
nginx 代理解决跨域
查看>>
Nginx 动静分离与负载均衡的实现
查看>>