`
langzhe
  • 浏览: 286719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用环形链表实现 Josephus杀人游戏

    博客分类:
  • c
 
阅读更多
利用环形链表实现 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    
  

 

  • 大小: 740.5 KB
0
6
分享到:
评论

相关推荐

    josephus(链表法)

    《Josephus问题与链表法实现》 Josephus问题,源于古罗马时期的历史事件,是一个经典的理论计算问题。在数学和计算机科学中,它被用来探讨各种淘汰算法。问题的基本设定是:N个人围成一个圈,从某人开始按顺时针...

    Josephus问题C++单循环链表实现

    在Josephus问题的C++实现中,我们需要定义链表节点结构,创建链表,然后实现报数和移除的逻辑。这个过程可能会涉及到迭代或递归,具体取决于所选择的解冑策略。递归方法虽然直观,但可能导致栈溢出,而迭代方法通常...

    Josephus约瑟夫问题的循环链表实现.cpp

    Josephus约瑟夫问题的循环链表实现.cpp

    c++实现Josephus问题

    设有n个人围坐一圈并由1到n编号,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新1到n报数,数到m的人又出列,如此反复地报数和出列,直到最后一个人出列为止,设计确定这n个人出列序列的程序

    定义一个链表类和Josephus类

    定义一个链表类和Josephus类,解决Josephus问题。Hint:链表类的对象是Josephus类的成员

    Visual C++ 编写的Josephus问题.rar

    在VC环境下,我们可以利用C++的强大功能,如类、指针和递归来实现Josephus问题的解决方案。0121改写Josephus问题可能指的是将原始问题的解决方案进行了某种优化或者改写,以适应更高效或更简洁的代码实现。 首先,...

    php基于环形链表解决约瑟夫环问题示例

    环形链表是一种特殊的链表,其最后一个节点指向第一个节点,形成一个闭合的循环。 在上述示例中,我们首先定义了一个`Child`类,用来表示链表中的每个节点。每个节点包含两个属性:`$no`表示人的编号,`$next`指向...

    Josephus问题C语言单循环链表.doc

    Josephus问题C语言单循环链表实现 本文档介绍了使用C语言实现的Josephus问题单循环链表算法。该算法使用链表数据结构来存储元素,并使用循环链表来实现Josephus问题的解决方案。 链表数据结构 在该算法中,我们...

    Josephus问题实现VC

    《Josephus问题的C语言实现:链表与向量法》 Josephus问题,源于古罗马历史上的一个典故,是一个经典的理论计算问题,通常被用于探讨和研究循环链表、数组以及递归算法等数据结构与算法概念。在本实验报告中,我们...

    约瑟夫环的循环链表实现.zip_Josephus_约瑟夫_约瑟夫环_链表

    约瑟夫环的循环链表实现,这个程序比较完整,有需要做试验的请速速下载。

    单向和双向循环链表实例(Josephus环问题)

    Josephus问题可以描述为如下的一个游戏:N个人编号从1到N,围坐成一个圆圈,从1号开始传递一个热土豆,经过M次传递后拿着土豆的人离开圈子,由坐在离开的人的后面的人拿起热土豆继续进行游戏,直到圈子只剩下最后一...

    用C++实现josephus功能

    自己写的 原创 希望能帮助到大家

    Josephus 约瑟夫问题 实现

    Josephus 约瑟夫问题 实现 Josephus 约瑟夫问题 实现

    用c语言实现josephus环问题

    #include #include #define NULL 0 #include typedef struct Lnode{ int data; struct Lnode *next; }joseph;

    杀人游戏c 编程实现

    根据给定的信息,我们可以将此问题理解为一种特定版本的约瑟夫环(Josephus problem)问题,并且涉及到了具体的编程实现。以下是对该问题及其编程解决方案的详细解析。 ### 杀人游戏背景 杀人游戏是一种常见的聚会...

    单向循环链表实现约瑟夫环.zip

    在这个场景中,我们关注的是如何使用这种数据结构来实现约瑟夫环(Josephus Problem)的经典算法。约瑟夫环问题是一个理论上的问题,源自古罗马的一个传说,其中涉及到人们站成一个圈,然后按照一定的规则逐个剔除,...

    Josephus问题的顺序表实现.rar_Josephus

    《Josephus问题的顺序表实现》 Josephus问题是一个经典的理论问题,源于古罗马时期的战争策略,后来被数学家Josephus Flavius提出并成为数学和计算机科学领域的一个经典问题。该问题通常描述为:在圆形排列的人群中...

    一种利用labview求解Josephus问题的简单方法

    “一种利用labview求解Josephus问题的简单方法”表明该压缩包文件包含了一个使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程工作台)编程解决Josephus问题的示例。...

    Josephus问题详解与实现.zip

    在数据结构中,它能帮助设计出更高效的循环队列或环形链表操作。 **源代码分析** 在提供的"Josephus问题详解与实现.pdf"文件中,很可能会包含更详细的算法实现和分析,包括不同编程语言的实现,比如C++、Java等,...

    约瑟夫换链表实现

    "约瑟夫环链表实现算法及代码分析" 约瑟夫环问题是计算机科学中的一种经典问题,旨在...链表实现可以模拟整个游戏过程,但时间复杂度高达 O(nm);数学方法可以用递推公式来计算最终的胜利者编号,时间复杂度为 O(n)。

Global site tag (gtag.js) - Google Analytics