/***
* 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语言实现。属于数据结构部分内容
循环链表实现约瑟夫环问题 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又...
这是数据结构的约瑟夫双向链表算法,用c++做的,使我们学习数据结构的时候老师让我们做的实验,很经典,提供给大家参考一下!
自己写的链表,并用链表解决了约瑟夫环问题,大家给个意见,主要是链表
用双向循环链表解决约瑟夫环问题的程序清单
单链表解决约瑟夫环问题
约瑟夫环 问题描述:约瑟夫问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到...
这是用数组表示循环链表,解决约瑟夫环的问题。匹配的报告实验报告随后上传。
//约瑟夫问题描述:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。
一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部...
数据结构问题,编程实现约瑟夫环,原题是严淑敏的《数据结构C语言版题集》实习一的第二题
已知N个人(以编号1,2,3...n分别表示)围成一个圈。 从编号为K的人开始报数,数到M的那个人出列,他的下一个人又从1开始报数,依照此规律重复下去,直到圆圈中的人全部出列。 问题:请打印出这N个的...双向链表实现的
用单链表解决约瑟夫环问题,数据结构实验报告。约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人...
用链表实现约瑟夫环,可以直接执行,编程语言为C++,适合初学者。
约瑟夫环,用循环链表实现,语言为Java。假设数到三的数出列。程序输出1到10的出列顺序。
约瑟夫环有很多种问法,这里举例了其中一种,不过都大同小异 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围, 每个人都有自己的一个密码。 从第一个人开始报数,数到m(初始设定)的那个人出列; 他的下...
单向循环链表实现约瑟夫环.zip