C语言解决约瑟夫环问题 详细注释
约瑟夫环算法是: 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语言解决约瑟夫环问题 详细注释相关推荐
- C语言使用数组和循环解决约瑟夫环问题
C语言使用数组和循环解决约瑟夫环问题 约瑟夫入狱,监狱内共有 33 个犯人.某日 33 名犯人围成一圈,从第一个犯人开始报数,报到数字 7 的犯人出列, 被枪毙,下一名犯人重新从 1 开始报数.依次类 ...
- PHP解决约瑟夫环问题
PHP解决约瑟夫环问题 一.总结 二.PHP解决约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到 ...
- 循环链表解决约瑟夫环问题
约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? "约瑟夫环是一个数学的应用问题:已知 ...
- 用java解决约瑟夫循环问题,Java实现循环列表解决约瑟夫环问题
约瑟夫环:共有n个人围成一圈,从1开始报数,数到m的人出圈,求最后幸运者序号?? 下面用Java实现循环列表解决这个问题: package com.iteye.ljmdbc7a; import jav ...
- C语言解决约瑟夫问题详解的代码
C语言解决约瑟夫问题详解的代码 参考文章: (1)C语言解决约瑟夫问题详解的代码 (2)https://www.cnblogs.com/odsxe/p/10791049.html (3)https:/ ...
- java实现环形链表解决约瑟夫环问题
什么是环形链表? 环形链表就是单向链表的基础上让链表的首尾相连,形成一个环,这就是一个循环链表. 什么是约瑟夫环问题? 约瑟夫环如下: 约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始报数, ...
- c语言约瑟夫环分函数,c语言实现约瑟夫环问题
<c语言实现约瑟夫环问题>由会员分享,可在线阅读,更多相关<c语言实现约瑟夫环问题(16页珍藏版)>请在人人文库网上搜索. 1.一)基本问题1问题描述设有编号为1,2,小的n ...
- 约瑟夫问题C语言加注释,用链表实现约瑟夫环【有注释,有很多注释】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 主要问题在于删除约瑟夫环的数,结果一直出不来,看了好几天改了好几次都改不对 #include #include typedef struct ysf { ...
- 【C语言】循环链表解决约瑟夫环问题
好玩的约瑟夫环:有M个人,编号分别为1到M,玩约瑟夫环游戏,最初时按编号顺序排成队列:每遍游戏开始时,有一个正整数报数密码N,队列中人依次围坐成一圈,从队首的人开始报数,报到N的人出列,然后再从出列的 ...
最新文章
- python中pygame模块的Linux下安装过程
- UA MATH563 概率论的数学基础 中心极限定理3 推导一元随机变量独立性的判断方法
- mysql设置token有效期_记住我 token保存到数据库
- java8 linq4j_Java 8仍然需要LINQ吗? 还是比LINQ更好?
- 【转】使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
- css样式子绝父相,子绝父相_HTML+CSS前端基础知识教程_腾讯视频
- linux系统如何挂载新硬盘,Linux系统挂载新硬盘操作流程
- Topcoder SRM 655 DIV1 250 CountryGroupHard
- 网络数据校验随笔(1)
- Web API 开发入门--基于Visual Studio
- 黑马程序员 手写xaml界面系统维护
- 混日子的老程序员感受结对编程的威力【工作效率狂提高】
- Google Colab使用笔记
- IDEA如何导入项目
- python 典型相关分析_CCA典型关联分析原理与Python案例
- 【Android开发经验】Android相关问题的好文章整理——温故而知新,可以为师矣
- 电子设计教程35:LC振荡电路
- Python爬取京东商品评论数据
- 二分查找理论(三种问题类型、两种算法形式)
- mysql 复制数据库
热门文章
- 没有基础的人可以学python吗-无基础可以学习Python吗?
- IBM - 开拓语音识别 - 概述 - 中国
- 接口说明_实时语音识别_智能语音交互-阿里云
- shiro 不过滤指定的带参数url_原创干货 | 过滤器设计缺陷导致权限绕过
- JS中简单数据类型和复杂数据类型
- H.264官方软件JM源代码简单分析-解码器ldecod
- ActionScript 3.0 API 中的 Video 类
- Eclipse中和编辑相关的快捷键
- C++发送HTTP请求获取网页HTML代码
- java 自己的 pid_Java获取自身PID方法搜集