C语言如何实现一个约瑟夫环
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,本篇内容主要讲解"C语言如何实现一个约瑟夫环",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言如何实现一个约瑟夫环"吧!C语言约瑟夫环的实现一、典故:据
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
国服1.9服务器地址
迈特思创数据库怎么样
山东安卓软件开发哪家实惠
有线网络技术瓶颈
方舟非专用服务器好友的龙
关系型数据库的三大范式指什么
iqq数据库设计6
数据库getdate
服务器无法打开无线网
数据中心机房服务器恢复通知
oracle数据库关监听
软件开发保密方案
数据库应用技术实训手册
海南会计软件开发商家
去哪打开授权服务器
法院网络安全教育新闻
银行 数据库安全性控制
数据库怎么定义范围约束
湛江 软件开发公司
怎么查看无线网络安全密钥
XSCAN下载软件开发
迈特思创数据库怎么样
军事仿真软件开发公司
网络安全负责什么意思
网络安全知识与技术专业大学
保障网络安全根本性工作
tdcs网络安全
网络技术基础是学什么的
鼎石 数据库
二维码电子名片服务器