`
xlaohe1
  • 浏览: 128563 次
  • 性别: Icon_minigender_1
  • 来自: 来处
社区版块
存档分类
最新评论

链表,约瑟夫环问题

阅读更多
/***
 * 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编写的循环链表来实现约瑟夫环

    循环链表 实现约瑟夫环 java 自己写的 测试通过 有注释

    约瑟夫环_双向链表(c++做的)

    下面我们将深入探讨如何使用C++实现约瑟夫环问题的双向链表解决方案: 1. **链表节点定义**:首先,我们需要定义一个链表节点结构体,包括一个整型数据(用于存储报数),一个指向下一个节点的指针,以及一个指向前...

    用链表表示循环链表的约瑟夫环的问题的源代码的报告

    《用链表表示循环链表的约瑟夫环问题的源代码分析》 约瑟夫环问题是一个经典的计算机科学问题,通常用链表来解决。本文将深入探讨如何使用链表来实现循环链表的约瑟夫环问题,并提供相关的源代码。 一、问题概述 ...

    约瑟夫环单循环链表C语言实现

    题目要求使用C语言编程实现约瑟夫环问题,并通过单向循环链表来管理参与游戏的人。以下是具体的知识点解析: #### 知识点解析 ##### 1. 单向循环链表 单向循环链表是一种特殊的线性表存储结构,其中每个节点包含...

    用链表表示循环链表的约瑟夫环的问题的源代码

    通过这个程序,我们可以理解如何利用链表和循环链表的概念解决约瑟夫环问题。循环链表使得我们能够方便地遍历整个链表,而剔除操作则通过移动指针实现了对链表节点的删除。这种编程方法展示了数据结构和算法在解决...

    循环链表实现约瑟夫环问题

    循环链表实现约瑟夫环问题 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又...

    C++语言约瑟夫环,双向链表

    以下是一个简单的C++双向链表约瑟夫环的实现思路: 1. 定义链表节点结构体,包含数据域(序号)、前向指针和后向指针。 2. 创建链表,将所有参与者按顺序插入链表,形成环状。 3. 设置计数器和移除条件,通常是从1...

    c++链表,解决约瑟夫环问题

    在这个问题中,`link.cpp`可能包含了链表节点的定义和约瑟夫环问题的解决方案,`main.cpp`则可能包含测试代码,用来创建一个链表并调用上述的`solveJosephusProblem`函数。`link.h`是头文件,通常包含了链表节点类的...

    约瑟夫环 C++ 链表

    约瑟夫环问题,也称为...总之,约瑟夫环问题结合了链表数据结构和基本的链表操作,是理解和掌握链表以及递归算法的一个好例子。通过C++编程,我们可以有效地解决这个问题,并进一步研究其在大规模数据下的优化策略。

    约瑟夫环(链表实现)

    约瑟夫环是一种经典的算法问题,它的主要思想是使用链表来模拟一个环形结构,然后通过遍历这个环形结构来实现约瑟夫环的操作。下面我们将详细介绍约瑟夫环的链表实现。 首先,我们需要定义链表结点结构体`node`,它...

    双向循环链表解决约瑟夫环问题

    用双向循环链表解决约瑟夫环问题的程序清单

    c++循环链表解决约瑟夫环问题

    ### 约瑟夫环问题及其C++循环链表实现 #### 问题背景与描述 约瑟夫环问题源于古罗马历史的一个故事,后来成为计算机科学中的一个经典问题。问题的大致描述是这样的:有n个人围成一个圈,每个人都有一个对应的密码...

    C/C++经典约瑟夫环问题——带头结点的单向循环链表

    在这个约瑟夫环问题中,每个结点代表一个参与者,它们按序号排列形成一个循环链表。**循环链表**是一种链式存储结构,其最后一个结点指向第一个结点,形成一个无始无终的环。这使得在链表中的移动变得简单,因为可以...

    单链表实现约瑟夫环

    单链表解决约瑟夫环问题

    循环链表实现约瑟夫环

    在计算机科学中,循环链表被广泛应用于各种算法和数据结构的设计,其中一个著名的应用就是约瑟夫环问题。 约瑟夫环问题是一个经典的理论问题,源于古罗马时期的传说。假设有一群人围成一个圈,从某个人开始报数,每...

    数组表示循环链表约瑟夫环

    总的来说,使用数组表示循环链表来解决约瑟夫环问题是一种巧妙的方法,它结合了数组的高效访问和链表的循环特性,为编程挑战提供了一个有趣的解决方案。通过理解这个算法,不仅可以提升编程技巧,还能深入理解数据...

    约瑟夫环问题(链表和数组)

    对于约瑟夫环问题,我们可以创建一个循环链表,链表的最后一个节点指回第一个节点,形成环。初始化时,链表的每个节点都代表一个人。计数过程通过遍历链表来完成,每次到达m时,删除当前节点并更新链表。这里需要...

Global site tag (gtag.js) - Google Analytics