利用环形链表实现 Josephus杀人游戏 1 #include <stdlib.h> 2 #include <stdio.h> 3 #include "circular.h" 4 5 void make_n(int n); 6 void kill_one(int, int); 7 void main(int argc, char *args[]){ 8 int i=1; //用i来记录当前点数 9 int n,m; 10 scanf("%d", &n); 11 scanf("%d", &m); 12 make_n(n); 13 printf("n=%d, m=%d\n",n,m); 14 list_node(); 15 printf("------------------\n"); 16 kill_one(m, i); 17 18 } 19 20 21 void make_n(int n) 22 { 23 link node = malloc(sizeof *node); 24 for(; n!=0; n--){ 25 node = make_node(n); 26 insert(node); 27 } 28 } 29 30 31 void kill_one(int m, int i) 32 { 33 link head = get_head(); 34 link node = head->next; 35 int len = 0; 36 while(node != head){ 37 if(i==m){ 38 printf("=========ko------------------=%d\n", node->item); 39 delete(node); 40 i=0; 41 } 42 i++; 43 node = node->next; 44 } 45 list_node(); 46 head = get_head(); 47 for(node=head; node->next != head; node=node->next){ 48 len++; 49 } 50 if(len>=m){ 51 printf("------------------\n"); 52 kill_one(m, i); 53 }else{ 54 printf("head->next->item=%d\n", head->next->item); 55 } 56 } 57
相关推荐
《Josephus问题与链表法实现》 Josephus问题,源于古罗马时期的历史事件,是一个经典的理论计算问题。在数学和计算机科学中,它被用来探讨各种淘汰算法。问题的基本设定是:N个人围成一个圈,从某人开始按顺时针...
在Josephus问题的C++实现中,我们需要定义链表节点结构,创建链表,然后实现报数和移除的逻辑。这个过程可能会涉及到迭代或递归,具体取决于所选择的解冑策略。递归方法虽然直观,但可能导致栈溢出,而迭代方法通常...
Josephus约瑟夫问题的循环链表实现.cpp
设有n个人围坐一圈并由1到n编号,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新1到n报数,数到m的人又出列,如此反复地报数和出列,直到最后一个人出列为止,设计确定这n个人出列序列的程序
定义一个链表类和Josephus类,解决Josephus问题。Hint:链表类的对象是Josephus类的成员
在VC环境下,我们可以利用C++的强大功能,如类、指针和递归来实现Josephus问题的解决方案。0121改写Josephus问题可能指的是将原始问题的解决方案进行了某种优化或者改写,以适应更高效或更简洁的代码实现。 首先,...
环形链表是一种特殊的链表,其最后一个节点指向第一个节点,形成一个闭合的循环。 在上述示例中,我们首先定义了一个`Child`类,用来表示链表中的每个节点。每个节点包含两个属性:`$no`表示人的编号,`$next`指向...
Josephus问题C语言单循环链表实现 本文档介绍了使用C语言实现的Josephus问题单循环链表算法。该算法使用链表数据结构来存储元素,并使用循环链表来实现Josephus问题的解决方案。 链表数据结构 在该算法中,我们...
《Josephus问题的C语言实现:链表与向量法》 Josephus问题,源于古罗马历史上的一个典故,是一个经典的理论计算问题,通常被用于探讨和研究循环链表、数组以及递归算法等数据结构与算法概念。在本实验报告中,我们...
约瑟夫环的循环链表实现,这个程序比较完整,有需要做试验的请速速下载。
Josephus问题可以描述为如下的一个游戏:N个人编号从1到N,围坐成一个圆圈,从1号开始传递一个热土豆,经过M次传递后拿着土豆的人离开圈子,由坐在离开的人的后面的人拿起热土豆继续进行游戏,直到圈子只剩下最后一...
自己写的 原创 希望能帮助到大家
Josephus 约瑟夫问题 实现 Josephus 约瑟夫问题 实现
#include #include #define NULL 0 #include typedef struct Lnode{ int data; struct Lnode *next; }joseph;
根据给定的信息,我们可以将此问题理解为一种特定版本的约瑟夫环(Josephus problem)问题,并且涉及到了具体的编程实现。以下是对该问题及其编程解决方案的详细解析。 ### 杀人游戏背景 杀人游戏是一种常见的聚会...
在这个场景中,我们关注的是如何使用这种数据结构来实现约瑟夫环(Josephus Problem)的经典算法。约瑟夫环问题是一个理论上的问题,源自古罗马的一个传说,其中涉及到人们站成一个圈,然后按照一定的规则逐个剔除,...
《Josephus问题的顺序表实现》 Josephus问题是一个经典的理论问题,源于古罗马时期的战争策略,后来被数学家Josephus Flavius提出并成为数学和计算机科学领域的一个经典问题。该问题通常描述为:在圆形排列的人群中...
“一种利用labview求解Josephus问题的简单方法”表明该压缩包文件包含了一个使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程工作台)编程解决Josephus问题的示例。...
在数据结构中,它能帮助设计出更高效的循环队列或环形链表操作。 **源代码分析** 在提供的"Josephus问题详解与实现.pdf"文件中,很可能会包含更详细的算法实现和分析,包括不同编程语言的实现,比如C++、Java等,...
"约瑟夫环链表实现算法及代码分析" 约瑟夫环问题是计算机科学中的一种经典问题,旨在...链表实现可以模拟整个游戏过程,但时间复杂度高达 O(nm);数学方法可以用递推公式来计算最终的胜利者编号,时间复杂度为 O(n)。