C语言如何实现一个约瑟夫环
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"C语言如何实现一个约瑟夫环",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言如何实现一个约瑟夫环"吧!C语言约瑟夫环的实现一、典故:据
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
广东猪兼强互联网科技有限公司
互联网通讯科技
互联网科技有限公司图片
互联网最新的科技有限公司
互联网科技的
与互联网科技公司
礼当家互联网科技
互联网科技股票
互联网科技素材视频竖屏
中国科技互联网公司收入
互联网科技项目计划书材料类
佛山市翊博互联网络科技有限公司
四川慕妮娅互联网科技有限公司
爱医互联网络科技
世界互联网领先科技成果获奖
互联网风格科技公司名称
福州德业互联网科技
互联网科技手机排行榜
互联网领先科技成果宣传视频
上海互联网科技园景观
互联网科技名片
苏州找大状互联网科技有限公司
亿策互联网科技
有木互联网科技
互联网科技logo设计
互联网科技汛
本届互联网博览会上的黑科技
上海京穆互联网科技有限公司
广州互联网高科技取餐柜
数字互联网科技有限公司