Java实现单向环形链表的创建,显示以及约瑟夫问题

这篇博客介绍了如何使用Java创建单向环形链表,并解决约瑟夫问题。通过定义`SingleCircleList`类,实现链表的添加、显示和约瑟夫问题的求解。约瑟夫问题的解决方案包括设置起始节点、报数次数和链表节点数量,通过遍历链表并删除节点来模拟问题的过程。
摘要由CSDN通过智能技术生成
// 单向环形链表的创建和约瑟夫问题
public class Joseph {
    public static void main(String[] args) {
        SingleCircleList scl = new SingleCircleList();
        scl.add(5);
        scl.Joseph(1,2,5);
    }
}

class SingleCircleList{
    // 单向环形链表的创建
    Node2 first = null;   // 创建头节点,用于指向链表的第一个元素
    public void add(int num){  // 接收一个数值,表示添加几个节点
        if(num < 1){
            return;
        }
        Node2 temp = null;  // 辅助指针节点
        for (int i = 1; i <= num; i++) {

            Node2 node = new Node2(i);
            // 当添加的是第一个节点时,将它的 next指向自己,形成环状
            if(i == 1){
                first = node;
                first.next = first;
                temp = first;  // 辅助指针指向第一个节点,后面用辅助指针帮助创建链表,first不动
            }else{
                temp.next = node;   // temp 始终指向链表的最后一个节点, next指向新节点,先将新节点加入链表
                node.next = first;  // 新节点的 next 指向第一个first,形成环状
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值