/***
* N 个人围成一圈
* 从1个人开始数
* 数到 M 的数的人就离开圈子
* 下一个人又从1开始数
* @author Administrator
*
*/
public class M3 {
public static void main(String[] args) {
Node root = new Node();
build(root, 41, 3);
//display(root, 3);
}
public static void display(Node root, int n) {
Node parent = root;
Node current = root;
int i = 0;
while(current.next != current) {
i ++;
if(i == n) {
System.out.println("death:" + current.key);
parent.next = current.next;
i = 0;
}
parent = current;
current = current.next;
}
System.out.println("the live:" + current.key);
}
public static void build(Node root, int n, int m) {
Node node = null, current = root;
//Node root = new Node();
root.key = 1;
for(int i = 1; i < n; i ++) {
node = new Node();
node.key = i + 1;
root.next = node;
root = node;
}
node.next = current;
display(current, m);
}
}
class Node {
int key;
Node next;
}
欢迎指正
分享到:
相关推荐
使用c语言中的循环链表及结构体实现约瑟夫环问题
约瑟夫环问题,用循环链表实现,最后输出胜利者
循环链表 实现约瑟夫环 java 自己写的 测试通过 有注释
下面我们将深入探讨如何使用C++实现约瑟夫环问题的双向链表解决方案: 1. **链表节点定义**:首先,我们需要定义一个链表节点结构体,包括一个整型数据(用于存储报数),一个指向下一个节点的指针,以及一个指向前...
《用链表表示循环链表的约瑟夫环问题的源代码分析》 约瑟夫环问题是一个经典的计算机科学问题,通常用链表来解决。本文将深入探讨如何使用链表来实现循环链表的约瑟夫环问题,并提供相关的源代码。 一、问题概述 ...
题目要求使用C语言编程实现约瑟夫环问题,并通过单向循环链表来管理参与游戏的人。以下是具体的知识点解析: #### 知识点解析 ##### 1. 单向循环链表 单向循环链表是一种特殊的线性表存储结构,其中每个节点包含...
通过这个程序,我们可以理解如何利用链表和循环链表的概念解决约瑟夫环问题。循环链表使得我们能够方便地遍历整个链表,而剔除操作则通过移动指针实现了对链表节点的删除。这种编程方法展示了数据结构和算法在解决...
循环链表实现约瑟夫环问题 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又...
以下是一个简单的C++双向链表约瑟夫环的实现思路: 1. 定义链表节点结构体,包含数据域(序号)、前向指针和后向指针。 2. 创建链表,将所有参与者按顺序插入链表,形成环状。 3. 设置计数器和移除条件,通常是从1...
在这个问题中,`link.cpp`可能包含了链表节点的定义和约瑟夫环问题的解决方案,`main.cpp`则可能包含测试代码,用来创建一个链表并调用上述的`solveJosephusProblem`函数。`link.h`是头文件,通常包含了链表节点类的...
约瑟夫环问题,也称为...总之,约瑟夫环问题结合了链表数据结构和基本的链表操作,是理解和掌握链表以及递归算法的一个好例子。通过C++编程,我们可以有效地解决这个问题,并进一步研究其在大规模数据下的优化策略。
约瑟夫环是一种经典的算法问题,它的主要思想是使用链表来模拟一个环形结构,然后通过遍历这个环形结构来实现约瑟夫环的操作。下面我们将详细介绍约瑟夫环的链表实现。 首先,我们需要定义链表结点结构体`node`,它...
用双向循环链表解决约瑟夫环问题的程序清单
### 约瑟夫环问题及其C++循环链表实现 #### 问题背景与描述 约瑟夫环问题源于古罗马历史的一个故事,后来成为计算机科学中的一个经典问题。问题的大致描述是这样的:有n个人围成一个圈,每个人都有一个对应的密码...
在这个约瑟夫环问题中,每个结点代表一个参与者,它们按序号排列形成一个循环链表。**循环链表**是一种链式存储结构,其最后一个结点指向第一个结点,形成一个无始无终的环。这使得在链表中的移动变得简单,因为可以...
单链表解决约瑟夫环问题
在计算机科学中,循环链表被广泛应用于各种算法和数据结构的设计,其中一个著名的应用就是约瑟夫环问题。 约瑟夫环问题是一个经典的理论问题,源于古罗马时期的传说。假设有一群人围成一个圈,从某个人开始报数,每...
总的来说,使用数组表示循环链表来解决约瑟夫环问题是一种巧妙的方法,它结合了数组的高效访问和链表的循环特性,为编程挑战提供了一个有趣的解决方案。通过理解这个算法,不仅可以提升编程技巧,还能深入理解数据...
对于约瑟夫环问题,我们可以创建一个循环链表,链表的最后一个节点指回第一个节点,形成环。初始化时,链表的每个节点都代表一个人。计数过程通过遍历链表来完成,每次到达m时,删除当前节点并更新链表。这里需要...