这是在《数据结构与算法分析(c描述)》书中的第三章的3.10练习题,是约瑟夫环的问题,
具体描述:有N个人围成一个圆环,每隔M个人后,第M个被淘汰出局,接着从被淘汰出局者的第二个人开始重新计数计算再次计算M个!
程序结束条件是当环中只剩下一个人的时候程序就可已结束,并且输出被淘汰的人的编号,以及胜利者的编号。
解决这个问题的关键是:1、对链表的基本操作需比较熟悉!
2、搭建一个循环的单链表!
3、每次删除一个节点的时候需要跳到他的下一个节点!
4、注意一些特殊的位置!比如最后一个节点。
5、当程序还剩下两个人的时候会出现一些bug,本次程序解决了这些bug。
程序代码如下,只为给新人解解迷惑,高手请多多指点!
#include <stdio.h>