首页 > 其他分享 >约瑟夫(环形链表)

约瑟夫(环形链表)

时间:2023-11-25 21:11:06浏览次数:27  
标签:Boy no int 环形 约瑟夫 链表 public

约瑟夫(环形链表)

/**
 * @author 缪广亮
 * @version 1.0
 */
class Joseph {
    public static void main(String[] args) {
        CircleSingleLinkedList circleSingleLinkedList = new CircleSingleLinkedList();
        circleSingleLinkedList.addBoy(5);
        circleSingleLinkedList.list();
    }

}

//Boy的节点类
class Boy {
    public int no;//编号
    public Boy next;
    public Boy(int no){
        this.no=no;
        this.next=null;
    }

    @Override
    public String toString() {
        return "Boy{" +
                "no=" + no +
                '}';
    }
}
//创建一个环形的单向链表
class CircleSingleLinkedList{
//    创建一个first结点,当前没有编号
    private Boy first=new Boy(-1);
//    添加小孩结点,构建成一个环形链表
    public void addBoy(int nums){
//        nums校验
        if (nums<1){
            System.out.println("nums不能小于1~~~");
            return;
        }
        Boy curBoy=null;//辅助指针,帮助构建环形链表
//        使用for来创建我们的环形链表
        for (int i = 1; i <=nums ; i++) {
//            根据编号创建小孩节点
            Boy boy = new Boy(i);
//            如果是第一个小孩
            if (i==1){
                first=boy;
                first.next=first;//构成一个环
                curBoy=first;//让curBoy指向第一个小孩
            }else {
                curBoy.next=boy;//
                boy.next=first;//
                curBoy=boy;
            }
        }
    }
//    遍历环形链表
    public void list(){
        if (first==null){
            System.out.println("环形链表为空,无小孩");
            return;
        }
//        first不能动,所以需要一个辅助指针完成遍历
        Boy curBoy=first;
        while (true){
            System.out.printf("小孩的编号%d \n",curBoy.no);
            if (curBoy.next==first)//遍历完成
                break;
            curBoy=curBoy.next;
        }
    }
}

标签:Boy,no,int,环形,约瑟夫,链表,public
From: https://www.cnblogs.com/mglblog/p/17856026.html

相关文章

  • 实现环形进度条效果
    好基友扔过来一张效果图,简单分析下,一起看看如何实现它吧。一个半环形用于表示0-100%。半环形开头有一个圆点作为修饰。半环形两端需要呈现为圆角。通过div实现先画一个长方形。<divclass="graph"></div>.graph{width:200px;height:100px;border:20pxsolidrgb......
  • 链表和双线链表
    单链表1.创建一个Node类//head不能动,头节点作用是表示链表的头privateNodehead;//在linkedList类写一个Node的成员内部类privateclassNode{privateintdata;privateNodenext;publicNode(intdata){this.data=data;th......
  • 直接讲清楚反转链表和判断子链表是怎么搞的【python】
    Reversed_sub反向子链表题,直接把反向链表和子链表讲清楚。反向假设有一个链表:1->2->3->4->None初始化三个指针:prev:用于指向当前节点的前一个节点。初始时prev为None。current:用于指向当前节点。初始时current指向链表的头节点。next:用于保存当前节点的下一......
  • 代码随想录-链表
    203.移除链表元素https://leetcode.cn/problems/remove-linked-list-elements/description//***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):......
  • 反转链表系列问题
    反转链表系列问题作者:Grey原文地址:博客园:反转链表系列问题CSDN:反转链表系列问题反转单链表题目描述见:LeetCode206.ReverseLinkedList思路如下对于任何一个节点cur来说,记录一个前驱节点pre(第一个节点的前驱节点是null)先用一个临时节点tmp记录cur的下一个......
  • 快速生成一组环形数据
      sklearn是一个开源的机器学习库,支持不同种类的机器学习算法,并且提供了许多质量良好的数据集。假如我们想要得到一组环形数据集,借助sklearn的包很轻易就可以实现,不过换个角度思考,我们自己动手是否也可以生成一组数据,使之在散点图上环状分布;借助C++的random头文件以及一点高中数......
  • 删除有序链表中重复的元素-I
    publicListNodedeleteDuplicates(ListNodehead){//writecodehereListNodecur=head;while(cur!=null){while(cur.next!=null&&cur.val==cur.next.val){ListNodetemp=cur.next.next;//这里牵扯到内存......
  • 链表
    链表逆置publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@paramheadListNode类*@returnListNode类*/publicListNodeReverseList(ListNodehead){//w......
  • 单链表(SingleLinkedList)
    单链表1.创建一个Node类//head不能动,头节点作用是表示链表的头privateNodehead;//在linkedList类写一个Node的成员内部类privateclassNode{privateintdata;privateNodenext;publicNode(intdata){this.data=data;th......
  • C语言数据结构_查找并删除单链表中最大值结点并返回值
    代码实现1#include<stdio.h>2#include<stdlib.h>34typedefstructNode//定义一个结构体5{6floatdata;7structNode*next;8}Node;910Node*Chuangzao_LinkedList()//创建一个链表11{12Node*head=NULL;//......