转载请注明出处:http://shuiguaiqq.iteye.com/blog/2065943
n个人围一圈报数,数到m的人退出,直到最后只剩一个人。
问题也就不详细描述了,百度一搜一大堆,以前看过马士兵的视频,里面讲到过用的好像类似双链,有left和right的,我自己也实现过,但是搞来搞去容易让看代码的看晕,数组实现也搞过,感觉也不够直观,我比较喜欢结构逻辑清晰的代码,所以感觉还是单链清爽点,代码如下:
/** * n个人围一圈报数,数到m的人退出,直到最后只剩一个人 */ public class CountQuit { static final int N = 500; static final int M = 3; static int remainPeople; static Node root = null; static { createCircle(); } public static void main(String[] args) { startGrame(); } public static void startGrame() { Node start = root; int count = 1; while (remainPeople > 1) { if (count == CountQuit.M - 1) { count = 0; start.setNext(start.getNext().getNext()); remainPeople--; } start = start.getNext(); count++; } System.out.println("最后剩下的小孩编号为:"+start.getCode()); } public static void createCircle() { Node temp = null; for (int i = 0; i < CountQuit.N; i++) { if (i == 0) { root = new Node(i + 1); temp = root; } else { temp.setNext(new Node(i + 1)); temp = temp.getNext(); if (i == CountQuit.N - 1) { temp.setNext(root); } } } remainPeople = CountQuit.N; } } class Node { private int code; Node next; public Node(int code) { this.code = code; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } }
相关推荐
在Java中,我们可以创建一个名为`Node`的类来表示链表的节点,其中包含一个`data`字段存储数据和一个`next`字段指向下一个节点。例如: ```java public class Node { int data; Node next; public Node(int ...
java实现约瑟夫环问题Josephus 约瑟夫问题 * 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k(1,2,3...n)的人开始报数,数到m(1,2,3...)的那个人出列; * 他的下一个人又从1开始报数,...
在这个主题中,我们将深入探讨如何使用Java来实现单链表,特别是关注如何插入元素以及如何构建链表。 单链表由一系列节点组成,每个节点包含两部分:数据元素和指向下一个节点的引用。在Java中,我们可以通过创建一...
本文将深入探讨如何使用Java语言实现单链表的基本操作,包括创建链表、插入节点、删除节点以及遍历链表等关键功能。 首先,我们需要理解单链表的概念。单链表是一种线性数据结构,其中每个元素(称为节点)包含两个...
下面将详细解释这些概念及其Java实现。 **线性表** 是一种基本的数据结构,它是由n(n>=0)个相同类型元素构成的有限序列。线性表中的元素具有顺序关系,即每个元素都有一个前驱和后继,除了第一个元素没有前驱,...
在本实验中,我们将实现一个基于JAVA的单链表操作实验,该实验可以实现以下三个功能:1.根据从键盘输入一串字符串自动生成一个单链表;2.根据指定元素删除相应的结点,可以一次性删除多个结点;3.根据指定修改相应...
单链表是数据结构中最基础的一种,它是一种线性数据结构,由一系列节点(也称为元素)组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,而指针域则指向链表中的下一个节点。在Java中,我们可以...
本话题主要探讨两种常用的数据结构——单链表和双向链表在Java中的实现,以及相关的操作,如在头部添加节点、在尾部添加节点、遍历、逆置和删除。 首先,我们来理解单链表和双向链表的基本概念。单链表是一种线性...
单链表解决约瑟夫环问题
在Java编程语言中,单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的引用。这个数据结构在处理动态数据集合时非常有用,因为它允许快速插入和删除操作。下面我们将详细...
这个压缩包中的`studentlinklist.java`文件很可能包含了实现学生单链表的类,以及相关的操作方法。下面将详细介绍单链表及其在Java中的实现方式。 **单链表** 是一种线性数据结构,其中每个元素(节点)包含两个...
本篇文章将深入探讨如何使用Java语言实现单链表,并对其基本操作进行详细阐述。 单链表是由一系列节点构成,每个节点包含两部分:数据元素(data)和指向下一个节点的引用(next)。在Java中,我们可以使用类来表示...
一个C程序 实现了单链表的逆序 且复杂度为O n
本文将深入探讨如何使用Java语言自己实现一个单链表,包括其核心概念、基本操作以及相关的代码实现。 首先,我们要了解单链表的基本概念。单链表是由一系列节点构成的,每个节点包含两个部分:数据域,存储实际的...
问题的基本设定是:人们站成一个圈,从某个人开始按顺时针方向报数,每报到特定数值的人会被排除出圈,然后从下一个人继续报数,直到只剩下最后一个人为止。在单链表实现中,我们需要创建一个链表来代表人们,然后...
用两个单链表实现两个大型整数的相加。。。。不限制两个数的位数,可以大于整数在计算机的存储
1. **创建**:在Java中,可以定义一个节点类来表示链表的节点,包含数据和指向下一个节点的引用。例如: ```java class Node { int data; Node next; public Node(int data) { this.data = data; this.next = ...
java单链表
在这个话题中,我们将深入探讨两种基本的线性数据结构——单链表和双向链表,并通过Java语言来实现它们。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两个部分:数据域和指针域。数据域存储实际的数据...