如何实现C语言版约瑟夫问题算法
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要为大家展示了"如何实现C语言版约瑟夫问题算法",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何实现C语言版约瑟夫问题算法"这篇文章吧。1、问题
千家信息网最后更新 2024年11月23日如何实现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安全错误
数据库的锁怎样保障安全
电力仪表软件开发
文件在服务器上是怎么存储的
长沙手机棋牌软件开发公司
招聘小视频的软件开发
gen10服务器
智能融媒体网络技术
农安通用网络技术咨询诚信经营
服务器信息安全
软件开发注意技术开发吗
外卖服务器如何装系统
三声万物互联网科技有限公司
网络安全宣传周图片素材
服务器怎么免除流量攻击
2021网络技术三级题目
ntp服务器获取时间
网络安全公司中标
数据库设计阶段与管理信息系统
速达数据库恢复失败
网络安全教育平台等录
网络技术特性
软件开发语言视频
滦州项目网络技术答疑解惑
莒南软件开发自学网
网络技术支持3000字报告
制约软件开发
王者服务器怎么查
我有一个软件连接不上数据库
衢州企业软件开发设计
众慈互联网科技有限公司招聘
新兔网络技术有限公司