4.3 Java实现循环链表(完整代码及详细注释)

1. 循环链表

1.1 什么是循环链表?

顾名思义,就是可以循环的链表哈哈哈,说白了就是收尾相连的链表,
也就是说在这个链表里,任何节点都可能是头节点,也可以是尾节点。

为了简单理解,这里只演示单向循环链表。

在这里插入图片描述

从图中可以看出,他和单向链表基本没差别,无非就是将尾节点的next设置为头节点即可(注意这个点就理解了),
也就是说单向循环链表的定义和单向链表的定义基本一致,只是多了一个标志,用于结束循环。

2.循环链表的实现

2.1 节点定义

/**
 * 单向循环链表
 */
public class Node {
   

    //存储数据的变量
    public int data;

    //它存储了下一个节点对象引用
    public Node next;

    //节点名称
    public String nodeName;

    //是否头节点标识
    public boolean isHead = false;

    public Node(int data, String nodeName){
   
        this.data=data;
        if(nodeName==null){
   
            nodeName=""+data;
        }
        this.nodeName = nodeName;
    }
}

2.2 操作方法定义

2.2.1 计算链表长度

    /**
     * 以输入节点为头,计算出链表长度
     * @param head 任意节点
     * @return 链表长度
     */
    static int ListLength(Node head) {
   
        int length = 0;
        Node cur = head;
        if(cur==null) return length;
        //先把第一个节点设置为头节点
        cur.isHead = true;
        length++;
        cur = cur.next;
        while (!cur.isHead) {
   
            length++;
            cur = cur.next;
        }
        // 还原
        head.isHead = false;
        return length;
    }

2.2.2 打印链表内容

    /**
     * 遍历打印链表内容
     * @param headNode 链表头节点
     */
    static void toString(Node headNode) {
   
        Node check = headNode;
        int size = ListLength(headNode);
        if(check==null){
   
            System.out.print("null");
            return;
        }
        for(int i=

作者:small-water

出处:https://www.cnblogs.com/small-water/p/17870050.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   文牧之  阅读(122)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示