环形链表

本文介绍了环形链表的概念,将其视为单链表或双向链表首尾相连形成的结构,并探讨了环形链表的逻辑特性。接着,文章详细阐述了如何用Java实现环形链表,包括构造节点类和环形链表类,以及针对环形链表的一些基本操作。最后提到了Josephu问题。
摘要由CSDN通过智能技术生成

环形链表介绍

环形链表其实很有意思,可以把环形链表看作将单链表或者双向链表的首尾两端相连而得到的。比如,若是将单链表的首尾两端相连,那么会得到一个顺时针方向或者是逆时针方向遍历的环形链表(注意只能是一个方向),比如这个样子:
单向环形链表

若是将双向链表的首尾两端相连的话,则会得到一个既可以顺时针方向也可以逆时针方向遍历的环形链表,比如这个样子:
双向环形链表
从逻辑关系上看,环形链表是不分首尾的。但是程序中为了遍历、查找等操作的方便,可以设置一个first节点(实际上就相当于一个入口节点,所有的环形链表操作可以从此节点开始),比如图里的Node1节点作为first节点。这个first节点并不固定,环形链表中的任意一个节点都可以作为first节点。

环形链表的Java实现

这里就只是简单写了单向环形链表的一些操作。

1. 构造节点类

将属性设为私有,并向外部程序提供接口方法。

class Node{
   
    // 数据
    private int number;
    // 指向下个节点
    private Node next;

    // 接口方法
    public Node(int number){
   
        this.number = number;
    }

    public int getNumber() {
   
        return number;
    }

    public Node getNext() {
   
        return next;
    }

    public void setNumber(int number) {
   
        this.number = number;
    }

    public void setNext(Node next) {
   
        this.next =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值