博客
关于我
求单链表中有效节点的个数
阅读量: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/

你可能感兴趣的文章
php 子进程监听消息,swoole学习笔记之多线程端口监听问题记录 多进程epoll模式...
查看>>
PHP 学习笔记 (四)
查看>>
Redis入门概述
查看>>
php 实现Iterator 接口
查看>>
PHP 实现N阶矩阵相乘
查看>>
php 实现进制转换(二进制、八进制、十六进制)互相转换
查看>>
PHP 实现页面跳转的三种方式及详细解析
查看>>
php 将XML对象转化为数组
查看>>
PHP 工具
查看>>
php 常用方法
查看>>
PHP 并发扣款,保证数据一致性(悲观锁和乐观锁)
查看>>
php 延迟静态绑定static关键字
查看>>
php 引用 -
查看>>
Redis入门
查看>>
PHP 截取字符串乱码的解决方案
查看>>
php 接口类与抽象类的实际作用
查看>>
PHP 插入排序 -- 折半查找
查看>>
PHP 支持8种基本的数据类型
查看>>
php 放大镜,放大镜放大图片效果
查看>>
php 数据库 表格数据,php数据库到excel表格-php怎么把数据库数据放到表格里
查看>>