约瑟夫环算法是: n 个人围成一圈,每个人都有一个互不相同的密码,该密码是一个整数值,选择一个人作为起点,然后顺时针从 1 到 k(k为起点人手中的密码值)数数。数到 k 的人退出圈子,然后从下一个人开始继续从 1 到 j (j为刚退出圈子的人的密码)数数,数到 j 的人退出圈子。重复上面的过程,直到剩下最后一个人。

/*约瑟夫环*/
#include <stdio.h>
#include <stdlib.h>#define N 9  //环中人的个数
#define OVERFLOW 0
int KeyW[N]={4,7,5,9,3,2,6,1,8};  //每个人手中的密码typedef struct LNode{  //定义循环链表int keyword;struct LNode * next;
}LNode,*LinkList;void Joseph(LinkList p,int m,int x){  //x为总人数,m为删除的那个人手中的密码,起始的m为第一个人手中的密码LinkList q;int i;if(x==0)return;q=p;m%=x;if(m==0)m=x;for(i=1;i<=m;++i){  //找到第m个人  p指向要删除的人的前一人 q指向要删除的人p=q;q=p->next;}p->next=q->next;  //删除qi=q->keyword;  //得到下一个要删除的人的位置printf("%d ",q->keyword);free(q);Joseph(p,i,x-1);  //递归调用 总人数减1,输入新的密码
}int main()
{int i,m;LinkList Lhead,p,q;  //Lhead指向头,p指向尾指针,q指向新建指针Lhead=(LinkList)malloc(sizeof(LNode));if(!Lhead)return OVERFLOW;Lhead->keyword=KeyW[0];Lhead->next=NULL;p=Lhead;for(i=1;i<9;++i){if(!(q=(LinkList)malloc(sizeof(LNode)))) return OVERFLOW;q->keyword=KeyW[i];  //对q的keyword进行赋值p->next=q;  //将q赋给p的nextp=q;  //p要指向尾部,将q赋给p}p->next=Lhead;  //构造循环链表printf("请输入第一次计数值m :\n");scanf("%d",&m);printf("输出的队列是:\n");Joseph(p,m,N);return 0;
}

------没有别人聪明,就请付出更多的努力------

C语言解决约瑟夫环问题 详细注释相关推荐

  1. C语言使用数组和循环解决约瑟夫环问题

    C语言使用数组和循环解决约瑟夫环问题 约瑟夫入狱,监狱内共有 33 个犯人.某日 33 名犯人围成一圈,从第一个犯人开始报数,报到数字 7 的犯人出列, 被枪毙,下一名犯人重新从 1 开始报数.依次类 ...

  2. PHP解决约瑟夫环问题

    PHP解决约瑟夫环问题 一.总结 二.PHP解决约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到 ...

  3. 循环链表解决约瑟夫环问题

    约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? "约瑟夫环是一个数学的应用问题:已知 ...

  4. 用java解决约瑟夫循环问题,Java实现循环列表解决约瑟夫环问题

    约瑟夫环:共有n个人围成一圈,从1开始报数,数到m的人出圈,求最后幸运者序号?? 下面用Java实现循环列表解决这个问题: package com.iteye.ljmdbc7a; import jav ...

  5. C语言解决约瑟夫问题详解的代码

    C语言解决约瑟夫问题详解的代码 参考文章: (1)C语言解决约瑟夫问题详解的代码 (2)https://www.cnblogs.com/odsxe/p/10791049.html (3)https:/ ...

  6. java实现环形链表解决约瑟夫环问题

    什么是环形链表? 环形链表就是单向链表的基础上让链表的首尾相连,形成一个环,这就是一个循环链表. 什么是约瑟夫环问题? 约瑟夫环如下: 约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始报数, ...

  7. c语言约瑟夫环分函数,c语言实现约瑟夫环问题

    <c语言实现约瑟夫环问题>由会员分享,可在线阅读,更多相关<c语言实现约瑟夫环问题(16页珍藏版)>请在人人文库网上搜索. 1.一)基本问题1问题描述设有编号为1,2,小的n ...

  8. 约瑟夫问题C语言加注释,用链表实现约瑟夫环【有注释,有很多注释】

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 主要问题在于删除约瑟夫环的数,结果一直出不来,看了好几天改了好几次都改不对 #include #include typedef struct ysf { ...

  9. 【C语言】循环链表解决约瑟夫环问题

    好玩的约瑟夫环:有M个人,编号分别为1到M,玩约瑟夫环游戏,最初时按编号顺序排成队列:每遍游戏开始时,有一个正整数报数密码N,队列中人依次围坐成一圈,从队首的人开始报数,报到N的人出列,然后再从出列的 ...

最新文章

  1. python中pygame模块的Linux下安装过程
  2. UA MATH563 概率论的数学基础 中心极限定理3 推导一元随机变量独立性的判断方法
  3. mysql设置token有效期_记住我 token保存到数据库
  4. java8 linq4j_Java 8仍然需要LINQ吗? 还是比LINQ更好?
  5. 【转】使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
  6. css样式子绝父相,子绝父相_HTML+CSS前端基础知识教程_腾讯视频
  7. linux系统如何挂载新硬盘,Linux系统挂载新硬盘操作流程
  8. Topcoder SRM 655 DIV1 250 CountryGroupHard
  9. 网络数据校验随笔(1)
  10. Web API 开发入门--基于Visual Studio
  11. 黑马程序员 手写xaml界面系统维护
  12. 混日子的老程序员感受结对编程的威力【工作效率狂提高】
  13. Google Colab使用笔记
  14. IDEA如何导入项目
  15. python 典型相关分析_CCA典型关联分析原理与Python案例
  16. 【Android开发经验】Android相关问题的好文章整理——温故而知新,可以为师矣
  17. 电子设计教程35:LC振荡电路
  18. Python爬取京东商品评论数据
  19. 二分查找理论(三种问题类型、两种算法形式)
  20. mysql 复制数据库

热门文章

  1. 没有基础的人可以学python吗-无基础可以学习Python吗?
  2. IBM - 开拓语音识别 - 概述 - 中国
  3. 接口说明_实时语音识别_智能语音交互-阿里云
  4. shiro 不过滤指定的带参数url_原创干货 | 过滤器设计缺陷导致权限绕过
  5. JS中简单数据类型和复杂数据类型
  6. H.264官方软件JM源代码简单分析-解码器ldecod
  7. ActionScript 3.0 API 中的 Video 类
  8. Eclipse中和编辑相关的快捷键
  9. C++发送HTTP请求获取网页HTML代码
  10. java 自己的 pid_Java获取自身PID方法搜集