C语言如何实现一个约瑟夫环
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇内容主要讲解"C语言如何实现一个约瑟夫环",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言如何实现一个约瑟夫环"吧!C语言约瑟夫环的实现一、典故:据
千家信息网最后更新 2025年11月08日C语言如何实现一个约瑟夫环
本篇内容主要讲解"C语言如何实现一个约瑟夫环",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言如何实现一个约瑟夫环"吧!
C语言约瑟夫环的实现
一、典故:
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是商量了一个自杀方式:
41个人排成一个圆圈,由第1个人 开始报数,每数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要 他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
二、用循环链表实现
1.约瑟夫环实现
sListNode* JosephCycle(sListNode* pHead, DataType x) { if(pHead == NULL) return NULL; sListNode* cur = pHead; while(1) { DataType m = x; if(cur->next == cur) { return cur; } while(--m) { cur = cur->next; } //delete替换法 cur->data = cur->next->data; sListNode* del = cur->next; cur->next = cur->next->next; free(del); del=NULL; }2.测试
void TestJosephCycle() { sListNode* list = NULL; Push_Back(list, 1); Push_Back(list, 2); Push_Back(list, 3); Push_Back(list, 4); Push_Back(list, 5); Push_Back(list, 6); Push_Back(list, 7); Push_Back(list, 8); Push_Back(list, 9); PrintList(list); //建环 sListNode* cur = list; while(cur->next != NULL) { cur = cur->next; } cur->next = list; sListNode* ret = JosephCycle(list, 3); cout<<"Joseph:"<data<到此,相信大家对"C语言如何实现一个约瑟夫环"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
约瑟
约瑟夫
朋友
语言
犹太
个人
内容
犹太人
学习
实用
更深
著名
个位
兴趣
典故
历史
历史学家
只有
圆圈
学家
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
佰威网络技术有限公司
网络安全师要学什么意思
怎样在dna数据库找人
vs2019数据库更新不了
校园网络安全告家长书
火影ol如何登录公测服务器
plsql重新获取服务器时间
临时性的数据库
方舟手游如何快速升级服务器
七星彩2019年历史开奖数据库
学网络安全毕业后去哪找工作
长春会务无纸化软件开发
数据库连接池参数配置优化
神经网络技术自动答题app
网络安全宣传周在哪个城市
大庆逐鹿中原服务器属于什么网络
网络安全基础和安全配置总结
舟山学软件开发需要学什么
读取数据库字符串出错
微星装甲师软件开发
为什么闲鱼网服务器经常显示忙
服务器 web 客户管理
华为服务器 硬盘
服务器崩溃的原因
数据库视图有id字段吗
ibm服务器生产地址
gpedit修改时钟服务器
单招学校网络技术
小班开展网络安全
mybatis数据库自动重连