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

你可能感兴趣的文章
oracle 监听器的工作原理
查看>>
oracle 行列转换
查看>>
oracle 行转列
查看>>
Oracle 表
查看>>
oracle 课堂笔记
查看>>
Oracle 返回结果集的 存储过程
查看>>
Oracle 递归
查看>>
Oracle 递归函数与拼接
查看>>
oracle 逻辑优化,提升高度,综合SQL上下文进行逻辑优化
查看>>
oracle 闪回关闭,关闭闪回即disable flashback的操作步骤
查看>>
oracle 限制用户并行,insert /*parallel */ 到不同用户,并行起不来的问题
查看>>
oracle--用户,权限,角色的管理
查看>>
Oracle-定时任务-JOB
查看>>
oracle.dataaccess 连接池,asp.net使用Oracle.DataAccess.dll连接Oracle
查看>>
oracle00205报错,Oracle控制文件损坏报错场景
查看>>
Oracle10g EM乱码之快速解决
查看>>
Oracle10g下载地址--多平台下的32位和64位
查看>>
Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
查看>>
oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
查看>>
Oracle11G基本操作
查看>>