1、什么是约瑟夫环/约瑟夫问题
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。
2、约瑟夫环、约瑟夫问题的实现
使用循环列表可以构建n个人围坐在一张圆桌周围的模型:
这里我们假定n = 41,k = 1,m = 3(其他参数的程序实现只需要稍微修改程序即可),当还剩下两个人的时候停止出列,具体的C语言实现代码如下:
#include "stdio.h"
#include "stdlib.h"
/*循环列表节点*/
typedef struct no