前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数据结构】线性表 ④ ( 循环链表 / 单循环链表 | 代码示例 - 使用 Java 实现 单循环链表 )

【数据结构】线性表 ④ ( 循环链表 / 单循环链表 | 代码示例 - 使用 Java 实现 单循环链表 )

作者头像
韩曙亮
发布2023-10-11 16:50:56
2590
发布2023-10-11 16:50:56
举报
文章被收录于专栏:韩曙亮的移动开发专栏

一、循环链表 ( 单循环链表 )

在 单链表 中 ,

将 最后一个节点 的指针 指向 第一个节点 , 形成一个闭环 ,

上述 头尾相连 的单链表 称为 " 单循环链表 " ,

简称为 " 循环链表 " ;

在 循环链表 中 , 没有明确的 第一个节点 或 最后一个节点 ;

循环链表 可以 模拟 环形结构 数据 , 如 : 循环队列 ;

二、代码示例 - 使用 Java 实现 单循环链表

在下面的代码中 ,

  • 定义节点类 : Node 是 循环链表 中的节点 , 每个节点都包含 data 数据 和 指向下一个节点的指针 next ;
  • 定义应用类 : CircularLinkedList 类中 , 定义了 单链表 的首元素 , 借助该元素 , 可以访问所有的链表数据 ;
  • 新增节点 : 调用 CircularLinkedList#append 函数 , 可以新增一个节点 ,
    • 先创建一个新节点 newNode , 然后判断 链表首元素 head 是否为空 , 链表首元素为空 , 即链表为空 ;
      • 如果链表为空 , 我们将头指针 head 指向新节点 , 并将新节点的 next 指针 指向自身,以形成循环。
      • 如果链表非空 , 我们遍历链表找到最后一个节点 , 并将其 next 指针 指向新节点 , 再将新节点的next指针指向头节点 ;

使用 Java 语言实现 单循环链表 :

代码语言:javascript
复制
public class Node {
    public int data;
    public Node next;

    public Node(int data) {
        this.data = data;
        this.next = null;
    }
}

public class CircularLinkedList {
    private Node head;

    public CircularLinkedList() {
        this.head = null;
    }

    public void append(int data) {
        Node newNode = new Node(data);

        if (head == null) {
            head = newNode;
            head.next = head;
        } else {
            Node lastNode = head;
            while (lastNode.next != head) {
                lastNode = lastNode.next;
            }
            lastNode.next = newNode;
            newNode.next = head;
        }
    }

    public void printList() {
        if (head == null) {
            System.out.println("Circular Linked List is empty.");
            return;
        }

        Node current = head;
        do {
            System.out.print(current.data + " ");
            current = current.next;
        } while (current != head);
    }

    public static void main(String[] args) {
        CircularLinkedList cll = new CircularLinkedList();
        cll.append(1);
        cll.append(2);
        cll.append(3);
        cll.append(4);

        cll.printList();
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、循环链表 ( 单循环链表 )
  • 二、代码示例 - 使用 Java 实现 单循环链表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档