如何实现C语言版约瑟夫问题算法
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要为大家展示了"如何实现C语言版约瑟夫问题算法",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何实现C语言版约瑟夫问题算法"这篇文章吧。1、问题
千家信息网最后更新 2025年11月08日如何实现C语言版约瑟夫问题算法
这篇文章主要为大家展示了"如何实现C语言版约瑟夫问题算法",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何实现C语言版约瑟夫问题算法"这篇文章吧。
1、问题描述:
有n个人围坐一圈,现从第s个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人又出列.如此下去,直到所有人都出列为止.试设计确定他们出列次序序列的程序
2、算法步骤:
1、确定存储结构:n个人围成一圈,故使用循环单链表来存储序号
2、算法实现:
该问题共n、m、s三个未知量,所以可以通过三个循环来实现,第一个循环用来确定最开始第一个报数的人的指针位置(单链表的头节点指针指向第s个人),第二个循环用来控制输出序号的次数(共n次),第三个循环用来数数(每一次循环使指针移动m次)
3、实现源代码:
# include# include typedef struct Node{ int number; struct Node * pNext;}NODE, *PNODE; PNODE creat_list(int n); int main (void){ int n,m,s; printf("约瑟夫环问题:\n"); printf("设有n(编号为"0 1 2 3 .....n-1 n")个人围坐一圈,现从第s个人开始报数,数到m的人出列,\n求最后的出列顺序。\n"); printf("请设置n, s, m :\n"); printf("n = "); scanf("%d", &n); printf("s = "); scanf("%d", &s); printf("m = "); scanf("%d", &m); //问题引导提示代码段 PNODE pHead = NULL; pHead = creat_list(n); pHead->number = 1; //创建单链表 PNODE p = pHead; //定义头指针 int i,j,k; //定义循环参数 for(j = 1; j < s; j++) { p = p->pNext; } //第一个循环确定第一个报数的人在循环单链表中的位置 for(i = 1; i <= n; i++) //外部循环代表遍历到最后一个所需要的循环次数 { for(k = 1; k < m; ) //内部循环代表遍历出列的人 { if(p -> pNext -> number != 0) { p = p -> pNext; k++; } else { p = p -> pNext; } } printf("%d ",p -> number); p -> number = 0; do { p = p -> pNext; }while(p -> number == 0); } printf("\n"); return 0;}PNODE creat_list(int n) //单链表的创建{ PNODE pHead = (PNODE)malloc(sizeof(NODE)); PNODE pTail = pHead; int i; for(i = 2; i <= n; i++) { PNODE pNew = (PNODE)malloc(sizeof(NODE)); pNew->number = i; pTail->pNext = pNew; pNew->pNext = pHead; pTail = pNew; } return pHead;}
以上是"如何实现C语言版约瑟夫问题算法"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
循环
问题
个人
算法
约瑟
约瑟夫
指针
语言
三个
内容
篇文章
位置
序号
次数
存储
学习
帮助
代码
代表
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机与网络技术基础考试
徐州软件开发公司哪家靠谱
上海网络安全活动周
网络技术工作经验分析
关于网络安全的演讲稿大学生
医学数据库发表文章
班德尔城的服务器在哪
打印服务器的英文是什么
网络安全与执法 考研
网络安全风险主要存在
金蝶OA数据库怎么迁移
嘉定区软件开发项目管理
审计署软件开发公司
创新创业正当时论文网络技术
高中网络安全手抄报文本
宝塔修改mysql数据库密码
软件开发开票内容怎么写
网络安全法立法的主要目的是
电商软件开发报价价格大全
互联网科技公司缴纳税点
绝地求生各种服务器的翻译
成都锐之盾网络技术公司
附加数据库失败0
软件开发都有哪些阶段
呼和浩特网络安全测评
软件开发项目成本如何计算
重要的服务器主动管理
工程管理软件开发价格
网络安全原理与实践
gjb的软件开发标准